转自:http://www.cnblogs.com/baicaiyoudu/p/5264497.html
今天在C代码中使用gets()时提示“warning: this program uses gets(), which is unsafe.”,然后这个程序还能运行,无聊的我开始查阅资料,为啥gets()会unsafe呢。
通过Google查阅前辈的问答,原来是这么回事。
gets()这个函数只有一个参数,那就是字符缓冲区的指针,并没有指定该缓冲区的长度也就是大小。当你输入一个很长很长的字符串的时候,gets ()函数会把每一个字符都存入到栈(statck)中,因此当字符串很大的时候就会导致程序异常终止。前辈们给的建议是使用fgets()函数替代gets()。
例子:
|
1
2
3
4
5
6
7
8
9
10
11
|
//使用gets()char buffer[4096];gets(buffer);//使用fgets()替换gets()char buffer[4096]; fgets(buffer,
(sizeof buffer
/ sizeof buffer[0]),
stdin); |
参考网址:
956

被折叠的 条评论
为什么被折叠?



