gpt4 book ai didi

c - struct sscanf 无法正常工作?

转载 作者:行者123 更新时间:2023-11-30 17:41:14 26 4
gpt4 key购买 nike

我正在尝试将一些数据从文件输入到结构中。我在不同的程序中使用了相同的精确代码,它可以正常工作吗?我不知道我错在哪里。下面的代码不应该工作吗?也许我对 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 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++;
}
}
}

最佳答案

计算行数的循环会读取整个文件,以便在开始第二个循环时当前位置位于文件末尾。考虑在第二个循环之前使用 rewind() 以移回到文件的开头。

此外,检查 fp 是否为 NULL 的测试应该在 open() 调用之后进行。否则,读取行数的代码将会失败。

关于c - struct sscanf 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com