【发布时间】:2022-08-16 16:00:42
【问题描述】:
所以我有一个 .txt 文件,我想使用 scanf() 在 c11 程序中通过 stdin 读取该文件。
该文件本质上是由一个字符串组成的多行。
例子:
hello
how
are
you
我怎么知道文件何时完成,我尝试将字符串与仅使用 eof 字符的字符串进行比较,但代码循环出错。
非常感谢任何建议。
-
scanf返回转换的项目数和那是您应该检查的内容:while(scanf(\"%31s\", buffer) == 1)。它对于非字符串输入更有用,因为它可能无法转换,但仍然比检查!= EOF更好,后者不会捕获无法转换的输入。当scanf()没有返回预期项目的数量时,您可以检查原因为什么,就像它是EOF。您应该始终积极检查scanf()是否返回正确的价值。 -
\"我尝试将字符串与仅使用 eof 字符的字符串进行比较,但代码循环出错\" -- 请提供问题的minimal reproducible example,其中包括函数
main和所有#include指令。顺便说一句,C 中没有“eof 字符”这样的东西。宏常量EOF是一个特殊的int值,它不代表字符代码。