c - 为什么要使用 fgets 读取多行文本,我们需要设置 fgets()!=NULL?
问题描述
如果我想从带有 的文本中读取多行fgets
,并且根据我的教科书,我会这样做:
char str[53];
...
while(fgets(str, max, f)!=NULL){
...
}
如果str
只是一行n个字符的字符串,程序如何读取第二行?根据文档,循环到达行尾时不应该停止吗?
fgets 从流中读取字符并将它们作为 C 字符串存储到 str 中,直到读取 (num-1) 个字符或到达换行符或文件结尾,以先发生者为准。
解决方案
根据文档:
成功时,函数返回 str。如果在尝试读取字符时遇到文件结尾,则设置 eof 指示符 (feof)。如果这发生在可以读取任何字符之前,则返回的指针是空指针(并且 str 的内容保持不变)。如果发生读取错误,则设置错误指示符 (ferror) 并返回空指针(但 str 指向的内容可能已更改)。
str 是您指定为第一个参数的缓冲区。如果fgets
完成读取,则返回 NULL。
推荐阅读
- wordpress - 我丢失了我的 wordpress 网站 url,我可以从 wordpress 备份文件中获取它吗
- php - 更改新嵌套数组中的键
- batch-file - 文件中的批量搜索和替换删除字符“!”
- python - 如何在张量流上使用 fp16(Eigen::half) 进行卷积
- java - 如何使用 jOOQ 从模板中按参数顺序生成 SQL?
- python - 如何在 numpy 上修复这些错误消息?
- html - 如何在 Office365 的 OWA 任务窗格中换行文本
- python - 如何在 python 脚本运行时同时将输出保存到文件中,即使出现错误?
- fluentvalidation - 在 fluentValidation 中使用必须
- xamarin - 在 Xamarin Android 中找不到 TextInputLayout endIconMode 属性