我必须从txt文件中读取数据,如下所示:
最后一部分必须是一个字符串,总是有7个字符。
我试过这个:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int sorok;
char s[1000]; //Max number of lines
FILE *f = fopen("jarmu.txt","r");
while( (fgets(s, sizeof(s), f)) != NULL) {
sorok++;
}
int idopont[sorok][3];
char rendszam[sorok][7];
while (!feof(f))
{
for(i=0; i<sorok; i++)
fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],&rendszam[i]);
}
for(i=0; i<sorok; i++)
printf("%d %d %d %7s\n",idopont[i][0],idopont[i][1],idopont[i][2],rendszam[i]);
return 0;
}
但它不起作用。你能帮帮我吗?
答案 0 :(得分:0)
你的问题很简单:
目前,您只读取文件一次以获取行数,然后再次解析这些行。你忘记了两者之间的倒带。使用:fseek(f, 0, SEEK_SET);
另外,请勿忘记删除while(!feof(f))
循环包含正文。
或者,只读取一次文件并直接解析这些行。
下一个问题:C使用以0结尾的字符串,并且您没有为终止0保留空间。请更正。
最终错误:fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],&rendszam[i]);
应为fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],rendszam[i]);
:
类型应为FILE*, char*, int*, int*, int*, char*
。最后一个是char**
。