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);
参考网址:
以上是关于c中使用gets() 提示warning: this program uses gets(), which is unsafe.的主要内容,如果未能解决你的问题,请参考以下文章
C语言如何求一个二维数组有几行,还有为啥会提示gets()是一个未定义的标识符?
linux系统下,警告:warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration] 和 war