gets() 函数和 '\0'输入中的零字节
如果 C 语言(例如 glibc)的 gets()
函数从文件中读取零字节 ('\0'
),它会停止吗?
快速测试:echo -ne 'AB\0CDE'
谢谢。
PS这个问题来自这个问题的评论:return to libc - Problem
PPS the gets
function是危险的,但这是一个关于这个功能本身的问题,而不是关于任何人是否应该使用它的问题。
Will the gets()
function from C language (e.g. from glibc) stop, if it reads a zero byte ('\0'
) from the file ?
Quick test: echo -ne 'AB\0CDE'
Thanks.
PS this question arises from comments in this question: return to libc - problem
PPS the gets
function is dangerous, but it is a question about this function itself, not about should anybody use it or not.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
gets()
的行为是当遇到换行符或遇到 EOF 时停止。它不关心是否读取\0
字节。C99 标准,7.19.7.7
来自 GNU libc 文档: http://www. gnu.org/software/libc/manual/html_node/Line-Input.html#Line-Input
The behavior of
gets()
is that it stops when a newline character is encountered or if EOF is encountered. It does not care if it reads\0
bytes.C99 Standard, 7.19.7.7
From GNU libc documentation: http://www.gnu.org/software/libc/manual/html_node/Line-Input.html#Line-Input
它不会停在零字节。
It will not stop at zero byte.