【发布时间】:2019-01-23 16:29:26
【问题描述】:
如果我想从带有fgets 的文本中读取多行,并且根据我的教科书,我会这样做:
char str[53];
...
while(fgets(str, max, f)!=NULL){
...
}
如果str只是一行n个字符的字符串,程序如何读取第二行?根据文档,循环到达行尾时不应该停止吗?
fgets 从流中读取字符并将它们作为 C 字符串存储到 str 直到 (num-1) 个字符被读取或换行符或 到达文件末尾,以先发生者为准。
【问题讨论】:
-
你什么都没设置,你只是告诉它在到达文件末尾时停止(此时它返回
NULL) -
您不会使用
fopen阅读。您使用fopen创建一个数据结构,将其传递给fgets以从文件中读取。fgets每次调用时读取一行。您在 while 循环中多次调用它,它会在每次迭代中读取一行。当没有更多行要读取时,fgets返回 NULL 并且循环终止。 -
@WilliamPursell 对不起,我的错。这是一个错字。已编辑。
标签: c