【发布时间】:2015-12-23 19:13:33
【问题描述】:
我一直在阅读 Linux 程序员手册,查找各种函数,并试图更深入地了解它们是什么/它们是如何工作的。
看着fgets()我读到“一个'\0'存储在缓冲区中的最后一个字符之后。
我已经通读了What does \0 stand for?,并且对\0 所代表的含义有非常深刻的理解(一个空字符,对吗?)。但我难以理解的是它与fgets() 的相关性,我真的不明白为什么它“需要”以空字符结尾。
【问题讨论】:
-
因为 fgets() 返回 C 中的字符串(字符数组),并且根据 C 标准,这些字符串需要以 \0 字符结尾。
-
因为
'\0'是字符串处理函数运行所必需的。它标志着数组的结束。请记住:您告诉fgets缓冲区的大小,但它读取的字符串可能比这短。 -
阅读:“我知道空值结束一个字符串。但是为什么我的字符串以空值结束?”
-
@LightnessRacesinOrbit 更像是“我知道字符串以
\0结尾,但为什么 fgets() 也知道这一点?” -
@Magisch: "f[ile] get s[tring]" 哈哈
标签: c