结构sscanf不能正常工作?
我正在尝试从文件向结构输入一些数据。 我在一个不同的程序中使用了相同的EXACT代码,它是否正常工作? 我不知道我错在哪里。 下面的代码不应该工作吗?也许我对sscanf不太熟悉。我需要一些帮助。多谢各位结构sscanf不能正常工作?,c,file,struct,fgets,scanf,C,File,Struct,Fgets,Scanf,我正在尝试从文件向结构输入一些数据。 我在一个不同的程序中使用了相同的EXACT代码,它是否正常工作? 我不知道我错在哪里。 下面的代码不应该工作吗?也许我对sscanf不太熟悉。我需要一些帮助。多谢各位 The txt file is like this: foo.var 1241 poa.org 421 aeraf.gr 5456 oiggdf.po 98843 代码: struct filedata { char fname[50]; int fsize; }; int
The txt file is like this:
foo.var 1241
poa.org 421
aeraf.gr 5456
oiggdf.po 98843
代码:
struct filedata
{
char fname[50];
int fsize;
};
int main()
{
char line[60];
int i=0;
int numberoffiles=0;
int lines=0;
int ch=0;
FILE *fp = fopen("mytext.txt","r");
while ((ch = fgetc(fp)) != EOF)
{
if (ch == '\n')
lines++;
}
struct filedata file[lines];
numberoffiles=lines + 1;
if(fp == (FILE*)NULL)
{
fprintf(stderr,"Cannot Open File\n");
exit (-1);
}
else
{
while (fgets(line,60,fp)!=NULL)
{
sscanf(line,"%s %d",file[i].fname,&file[i].fsize);
i++;
}
}
}
计算行数的循环读取整个文件,以便在开始第二个循环时,当前位置位于文件的末尾。考虑在第二个循环返回到文件的开始之前使用<代码> ReWrand(< /代码>)。
另外,查看
fp
是否为NULL的测试应该在open()
调用之后进行。否则,读取行数的代码将失败。除了“它不工作”之外,还有什么问题?嗯,到底是什么问题?我只是在名称和大小之间使用了一个空格。谢谢你,乔纳森。现在工作很好。啊,有办法克服这个问题吗?