来自GNU C编程教程:
fgets
("file get string")函数类似于gets
函数。此函数已被弃用——这意味着它已经过时,强烈建议不要使用它——因为它是危险的。它是危险的,因为如果输入数据包含null字符,则无法确定。除非您知道数据不可能包含null,否则请勿使用fgets
。不要用它来读取用户编辑的文件,因为如果用户插入了null字符,则应正确处理它或打印清晰的错误消息。尽可能使用getline
或getdelim
而不是fgets
。
我认为fgets
函数遇到\0
或\n
会停止;为什么这个手册页面会建议null字节是“危险的”,当fgets
应该能够正确处理输入?此外,getline
和fgets
之间有什么区别,并且在C99或将来的C标准中,fgets
函数是否真的被视为弃用?
fgets()
在遇到空字节时不会停止,只有在空间用尽、遇到换行符或者到达EOF时才会停止。 - Jonathan Leffler