c - fgetc() 和 fgets() 之间的区别?

标签 c file

我知道 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/

相关文章:

c++ - 这个递归函数的时间复杂度是多少

c - swift |获取struct中c char数组的指针

c# - C/C++/C# 在监视器上设置窗口位置

C 修改结构中的数组

javascript - 这个客户端应用程序安全吗?

java - 是否可以在 Java 中将文件编码为 Data URI?

c - 如何在内核模块内创建/proc文件?

c - GDB-remote + qemu 报告静态 C 变量的意外内存地址

windows - 批量拆分一个文本文件

python - Python 与 Perl 中的小写脚本