我正在读取格式为
1 32 43 23
32 43
123 43 54 243
123 2222
2
这是我的代码片段。
string[100];
while(!feof(fp))
fgets(string,100,fp)
现在,当我把每个字符串放在最后一个字符串中时,我会得到重复和一些更多的模糊不清(比如说会打印出123或其他东西)。
如何解决这个问题?
fgets
会返回你传递给它的缓冲区指针(例如你的示例中的 string
)。如果遇到文件结尾且没有读取任何字符,fgets
将返回 NULL
。
试试这个:
char string[100];
while(fgets(string, 100, fp)) {
printf("%s\n", string);
}
feof
测试是不必要的(已编辑)。 - Sergey Kalinichenkoprintf
中的 \n
是不必要的,因为它已经通过 fgets()
从文件中获取(如果存在)。 - alk(void*)0
。如果你使用NULL进行检查,代码会更易读。 - overexchangeeof
。你需要使用fgets
的返回值(当到达eof
或出现错误时返回NULL
,否则返回所给指针),而不是检查eof
。
char string[100];
while(fgets(string, 100, fp))
// do stuff with string
\n
? - Sergey Kalinichenko