【发布时间】:2013-04-25 17:57:31
【问题描述】:
来自The GNU C Programming Tutorial:
fgets("file get string") 函数类似于gets 功能。此功能已弃用 - 这意味着它已过时 并且强烈建议您不要使用它——因为它是 危险的。这很危险,因为如果输入数据包含 null 性格,你说不出来。除非您知道数据,否则不要使用fgets不能包含空值。不要用它来读取用户编辑的文件 因为,如果用户插入一个空字符,你应该要么 正确处理它或打印明确的错误消息。始终使用 如果可以,getline或getdelim而不是fgets。
我认为fgets 函数在遇到\0 或\n 时会停止;为什么当fgets 应该正确处理输入时,此手册页会建议空字节是“危险的”?此外,getline 和 fgets 之间有什么区别,fgets 函数在 C99 或未来的 C 标准中是否真正被弃用?
【问题讨论】:
标签: c file-io gnu c99 buffer-overflow