FILE *create; if((create=fopen(path,"r"))!=NULL) { int j; char **a; a=(char **)malloc(sizeof(char*)); for (j=0;;j++) { a[j]=(char *)malloc(sizeof(char)); fgets(a[j],10000,create); if(feof(create)!=0) { for(;j=0;j--) free(a[j]); break; } } free(a); } else printf("Fail to open the file.\n");
txt文件每行字符个数未知。我想把txt里每一行单独存放一个字符串,于是想用动态二维数组,这段代码有什么问题?编译没问题,运行之后就不行了,会死机还怎么的
原来如此,那如果我并不知道文件的行数,此处只定义100如果越界了怎么办呢?因为要求最后放进去测试的文件数据量会比较大。另外能加个Q不,我是大一C的初学者,期末要写个程序问题比较多,希望您能帮助我一下,可以吗?
追答你可以累计读取的行数,如果超过了100可以用 realloc 重新分配再多增100个。或者超过100后,先把这100行是数据处理完,然后释放掉这100个a[j],接下来再重新为每个a[j]分配一个指向的10000个字节的空间,把后面的字符串存入,依次类推直到文件结束。 在这一过程中不一定要分配100个,你可以根据情况进行选择。
843064486 我的QQ
1通过fopen函数打开文本,例如FILE *fp=fopen("in.txt","r");//返回一个FILE类型的句柄
2然后就可以通过fcanf()函数对txt文本进行读取
3操作完文本之后用fclose()函数 关闭已经打开的文件。
#include <stdio.h>这个是一个另写的函数,路径名path在主函数里传过来的,没有问题,这个已经测试过了
追答那不清楚,你可以放到贴吧里去问一问。