会不会gets()
C 语言中的函数(例如 glibc)如果读取到零字节('\0'
)从文件中?
快速测试:echo -ne 'AB\0CDE'
Thanks.
PS这个问题来自这个问题的评论:返回 libc - 问题
PPS the gets
函数是危险的,但这是一个关于这个函数本身的问题,而不是关于任何人是否应该使用它的问题。
的行为gets()
是当遇到换行符或遇到 EOF 时停止。它不在乎是否读取\0
bytes.
C99 标准,7.19.7.7
Synopsis
#include <stdio.h>
char *gets(char *s);
描述
The gets
函数从 stdin 指向的输入流中读取字符到
指向的数组s
,直到遇到文件结尾或读取换行符。
任何换行符都会被丢弃,并且紧随其后写入一个空字符
最后一个字符读入数组。
来自 GNU libc 文档:http://www.gnu.org/software/libc/manual/html_node/Line-Input.html#Line-Input
— 已弃用的函数:char * gets (char *s)
功能gets
从流 stdin 读取字符直到下一个换行符,并将它们存储在字符串 s 中。换行符被丢弃(请注意,这与 fgets 的行为不同,后者将换行符复制到字符串中)。如果gets遇到读取错误或文件结尾,则返回空指针;否则返回 s。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)