我知道 fgetc() 将从用作参数的 FILE 指针指向的文件中一次读取一个字符。
fgets() 将读取整个字符串到参数列表中指定的大小,但是当行尾发生时 fgetc() 返回 EOF 而 fgets() 返回 NULL 。那么为什么要记住两件令人困惑的事情?

最佳答案

一个返回 EOF 而另一个返回 NULL 的原因是两个函数的返回类型不同:一个返回 int ,而另一个返回 char*

当输入结束时,两个函数都需要返回一个“特殊”值。 “特殊”是指不能合法出现在输入中的值。对于指针,大多数情况下的特殊值是 NULL ,这就是 fgets 返回的值。但是,您不能使用 NULL 来标记来自 fgetc 的输入的结尾,因为零字符代码可以合法地出现在输入中。这就是为什么EOF在返回单个字符的I/O函数中用作“特殊值”的原因。

10-06 14:22
查看更多