首页 > 解决方案 > 为什么要使用 fgets 读取多行文本,我们需要设置 fgets()!=NULL?

问题描述

如果我想从带有 的文本中读取多行fgets,并且根据我的教科书,我会这样做:

 char str[53];
 ...
 while(fgets(str, max, f)!=NULL){
   ...
 }

如果str只是一行n个字符的字符串,程序如何读取第二行?根据文档,循环到达行尾时不应该停止吗?

fgets 从流中读取字符并将它们作为 C 字符串存储到 str 中,直到读取 (num-1) 个字符或到达换行符或文件结尾,以先发生者为准。

标签: c

解决方案


根据文档:

成功时,函数返回 str。如果在尝试读取字符时遇到文件结尾,则设置 eof 指示符 (feof)。如果这发生在可以读取任何字符之前,则返回的指针是空指针(并且 str 的内容保持不变)。如果发生读取错误,则设置错误指示符 (ferror) 并返回空指针(但 str 指向的内容可能已更改)。

str 是您指定为第一个参数的缓冲区。如果fgets完成读取,则返回 NULL。


推荐阅读