问题:
使用gets()函数的时候出现warning: this program uses gets(), which is unsafe.

原因:
gets()这个函数只有一个参数,那就是字符缓冲区的指针,并没有指定该缓冲区的长度也就是大小。当你输入一个很长很长的字符串的时候,gets ()函数会把每一个字符都存入到栈(statck)中,因此当字符串很大的时候就会导致程序异常终止。
解决办法:
采用fget方法代替gets()
char name[10];
fget(name,sizeof(name),stdin);
其中参数
name:字符型指针,指向用来存储所得数据的地址
sizeof(name):整形数据,指明缓冲区的大小,拷贝到buf地址的最大字符数量 (可以传入为int类型)
stream:指明输入流的FILE对象的指针,stdin可以作为参数,表示从标准输入读取
返回值:成功,则函数返回name ; 如果读取错误发生,返回null
具体gets()、fget方法区别:https://zhangvalue.blog.youkuaiyun.com/article/details/103171186
本文解析了使用gets()函数可能导致的安全问题,详细介绍了其背后的原因,并提供了使用fget()函数作为安全替代方案的方法,包括参数说明及返回值解释。
2315

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



