繁体   English   中英

使用 fgets 从文件中读取

[英]Reading from file using fgets

我正在读取格式文件

1 32 43 23
32 43
123 43 54 243 
123 2222
2

这是我的代码片段。

string[100];
while(!feof(fp))
    fgets(string,100,fp)

现在,当我放置每个字符串时,在最后一个字符串中,我得到了重复和更多的歧义(比如其他东西也会被打印出来,比如 123 左右)。

如何解决这个问题呢?

您需要检查fgets的返回值。 如果读取成功, fgets返回指向您传递给它的缓冲区的指针(即示例中的string )。 如果遇到 End-of-File 并且没有读取任何字符,则fgets返回NULL

尝试这个:

char string[100];
while(fgets(string, 100, fp)) {
    printf("%s\n", string);
}

只有您尝试从末尾的文件中读取才能达到eof 您必须改用fgets的返回值(它在 eof 或错误时返回NULL ,否则返回指针):

char string[100];
while(fgets(string, 100, fp))
    // do stuff with string

像这样检查返回值将导致您永远不会在循环体内部击中 eof,就像另一个一样,而不是在条件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM