GETS - Linux手册页

时间:2019-08-20 18:00:32  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

gets-从标准输入中获取字符串(不建议使用)

语法

#include <stdio.h>

char *gets(char *s);

说明

切勿使用此功能。

gets()从stdin读取一行到s所指向的缓冲区,直到终止换行符或EOF,然后将其替换为空字节(aq \ 0aq)。不检查缓冲区溢出(请参阅下面的错误)。

返回值

gets()成功时返回s,错误则返回NULL,或者在未读取任何字符的情况下返回文件结尾。但是,由于缺少缓冲区溢出检查,因此无法保证该函数将返回。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
gets()Thread safetyMT-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/