c中使用gets() 提示warning: this program uses gets(), which is unsafe.

Posted WingPig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c中使用gets() 提示warning: this program uses gets(), which is unsafe.相关的知识,希望对你有一定的参考价值。

今天在C代码中使用gets()时提示“warning: this program uses gets(), which is unsafe.”,然后这个程序还能运行,无聊的我开始查阅资料,为啥gets()会unsafe呢。

通过Google查阅前辈的问答,原来是这么回事。

gets()这个函数只有一个参数,那就是字符缓冲区的指针,并没有指定该缓冲区的长度也就是大小。当你输入一个很长很长的字符串的时候,gets ()函数会把每一个字符都存入到栈(statck)中,因此当字符串很大的时候就会导致程序异常终止。前辈们给的建议是使用fgets()函数替代gets()。

例子:

 

//使用gets()

char buffer[4096];

gets(buffer);

//使用fgets()替换gets()

char buffer[4096]; 

fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);

 参考网址:

1、Stackoverflow

以上是关于c中使用gets() 提示warning: this program uses gets(), which is unsafe.的主要内容,如果未能解决你的问题,请参考以下文章

VS2015提示gets未定义

VS2015提示gets未定义

C语言如何求一个二维数组有几行,还有为啥会提示gets()是一个未定义的标识符?

Linux下使用gets和puts方法出现的错误

linux系统下,警告:warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration] 和 war

C语言gets()问题