GETS - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
gets-从标准输入中获取字符串(不建议使用)
语法
#include <stdio.h> char *gets(char *s);
说明
切勿使用此功能。
gets()从stdin读取一行到s所指向的缓冲区,直到终止换行符或EOF,然后将其替换为空字节(aq \ 0aq)。不检查缓冲区溢出(请参阅下面的错误)。
返回值
gets()成功时返回s,错误则返回NULL,或者在未读取任何字符的情况下返回文件结尾。但是,由于缺少缓冲区溢出检查,因此无法保证该函数将返回。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
gets() | Thread safety | MT-Safe |
遵循规范
C89,C99,POSIX.1-2001。
LSB弃用get()。 POSIX.1-2008标志gets()已过时。 ISO C11从C语言中删除了gets()的规范,并且从版本2.16开始,如果定义了_ISOC11_SOURCE功能测试宏,则glibc头文件不会公开函数声明。
BUGS
永远不要使用gets()。因为无法不事先知道数据就无法判断将读取多少个字符,并且由于gets()将继续存储缓冲区结束后的字符,所以使用它非常危险。它已被用来破坏计算机安全性。请改用fgets()。
有关更多信息,请参见http://cwe.mitre.org/data/definitions/242.html上的CWE-242(又名"固有危险功能的使用")。
另外参见
read(2),write(2),ferror(3),fgetc(3),fgets(3),fgetwc(3),fgetws(3),fopen(3),fread(3),fseek(3), getline(3),getwchar(3),puts(3),scanf(3),ungetwc(3),unlocked_stdio(3),feature_test_macros(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。