txt文档内容转成二维数组

qirong2lei1 2014-09-21 02:55:22
txt文档内容大致如下,
我的 你的 他的
改 公交卡 爱干净
爱国 家庭 伽

,都是汉字,求转为二维数组的程序,能查找具体哪个词语在数组哪行哪列
...全文
364 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-09-23
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#define MAXCHRS 100 //每单元最多字符数-1
#define MAXCOLS 100 //每行最多列数-1
#define MAXROWS 1000 //每文件最多行数
int i,j,r,n;
char s[MAXROWS][MAXCOLS+1][MAXCHRS];
char ln[MAXCOLS*(MAXCHRS+1)+1];
char *p;
FILE *f;
int main () {
    f=fopen("in.txt","r");
    if (NULL==f) {
        printf("Can not open file in.txt!\n");
        return 1;
    }
    i=0;
    while (1) {
        if (NULL==fgets(ln,MAXCOLS*(MAXCHRS+1)+1,f)) break;
        if ('\n'==ln[strlen(ln)-1]) ln[strlen(ln)-1]=0;
        p=ln;
        j=0;
        while (1) {
            if (1!=sscanf(p,"%99s%n",s[i][j],&n)) break;
            j++;
            if (j>=MAXCOLS) break;
            p+=n;
        }
        s[i][j][0]=0;
        i++;
        if (i>=MAXROWS) break;
    }
    fclose(f);
    r=i;
    for (i=0;i<r;i++) {
        j=0;
        while (1) {
            if (0==s[i][j][0]) break;
            printf("%s ",s[i][j]);
            j++;
        }
        printf("\n");
    }
    return 0;
}
//我的 你的 他的
//改 公交卡 爱干净
//爱国 家庭 伽
//
刚被给出可实现的代码,就立马改需求的人会被码农在心里杀一万遍不止! http://bbs.csdn.net/topics/390890840
赵4老师 2014-09-22
  • 打赏
  • 举报
回复
#include <stdio.h>
int i,j;
char s[3][3][32];
FILE *f;
int main () {
    f=fopen("in.txt","r");
    if (NULL==f) {
        printf("Can not open file in.txt!\n");
        return 1;
    }
    for (i=0;i<3;i++) {
        for (j=0;j<3;j++) {
            fscanf(f,"%31s",s[i][j]);
        }
    }
    fclose(f);
    for (i=0;i<3;i++) {
        for (j=0;j<3;j++) {
            printf("%s ",s[i][j]);
        }
        printf("\n");
    }
    return 0;
}
//我的 你的 他的
//改 公交卡 爱干净
//爱国 家庭 伽
//
qirong2lei1 2014-09-22
  • 打赏
  • 举报
回复
C++初学者,能给段代码调试下吗
赵4老师 2014-09-22
  • 打赏
  • 举报
回复
使用wchar_t
qirong2lei1 2014-09-22
  • 打赏
  • 举报
回复
大概运行了下,可能你没明白我的意思,我要的二维数组不是确定的行和列,都只有一个最大值。而且每一列不一定要都有,现在找你的方法,如果txt第一行没有第三列,就会把第二行的补上了,不是我想要的结果.我想要的结果是单词在第几行第几列,就是在数组的元素。
熊熊大叔 2014-09-21
  • 打赏
  • 举报
回复
就依次读字符即可,遇到空格就获取一个字符串,遇到回车就高维加一。 和中文没有关系。
king1076 2014-09-21
  • 打赏
  • 举报
回复
中文和英文有什么区别吗

65,192

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧