我知道 fgetc()
将一次从用作参数的 FILE
指针指向的文件中读取一个字符。
fgets()
将读取整个字符串,直到达到参数列表中指定的大小,但是当出现行尾时 fgetc()
返回 EOF 而 fgets()
返回 NULL
。那么为什么要记住两件令人困惑的事情呢?
最佳答案
一个返回EOF
而另一个返回NULL
的原因是两个函数的返回类型不同:一个返回int
,而另一个返回 char*
。
当到达输入末尾时,这两个函数都需要返回一个“特殊”值。 “特殊”是指不能合法出现在输入中的值。对于指针,大多数情况下的特殊值是 NULL
,所以这就是 fgets
返回的值。但是,您不能使用 NULL
来标记 fgetc
输入的结束,因为字符代码零可以合法地出现在输入中。这就是为什么 EOF
在返回单个字符的 I/O 函数中用作“特殊值”的原因。
关于c - fgetc() 和 fgets() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195793/