永发信息网

C语言里的gets()函数

答案:3  悬赏:40  手机版
解决时间 2021-11-27 17:44
C语言里的gets()函数
最佳答案
对的,确实有举出漏洞。以下是个人建议,希望对楼主有所帮助。首先我们应该先认识一下gets和scanf的语法解构。如果要给一个字符串赋值,那我们可以这样做。int a[10];gets(a);或是for(i=0;i<10;i++)scanf("%d",&a[i]);由上我们可以看出,scanf每次只能输入一个字符,然后回车,继续循环。而gets呢,需要把所有的字符串都输入完后回车结束。这就造成了一个问题。如果我们输入的字符串多于10个单位呢?我们输入的“a[20]”个空间的字符。这就可能会产生溢出漏洞。 仅代表个人建议,希望对楼主有所帮助。
全部回答
用gets的安全版本get_s,这样可以防止内存溢出,gets_s(char *bufferr,size_t SizeByCharater)有两个参数,⑴字符串缓冲区⑵可存储的最大长度
大约在2005年,scanf也被证实存在缓冲区溢出漏洞,然后被标记为作废
【当然了,具体得看你用什么标准来写代码,老式的编译器应该不会有这些提示】。
现在一般都会选择用C++中更加安全的cin。
-----------------
scanf函数是不安全的,它并不会检查缓冲区,非常容易出问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
买3千克葡萄一共用了24元。平均每千克多钱
我现在14,身高1.85体重165KG,想把胳膊练得
下斜哑铃卧推怎么做
环球运输公司地址在什么地方,我要处理点事!
2o05年第145期开什么码
254不锈钢含多少个镍
月入3500元要支付900元的房租 如何理财好
西安哪里有专门卖帽子的店,大点的.
今年寿县一中录取分数线多少
摆一个大正方体至少需要多少个小正方体
老盐柠檬水的做法步骤图,老盐柠檬水怎么做好
三菱汽车正常停车为什么起动不了!
ps2圣斗士星矢下载
水果店运进苹果,橘子和梨共465千克,如果橘
2.15(38一x)十3.15(38十x)=208
推荐资讯
托福EMS费用要交吗
闲鱼上我卖了个东西买家收到后申请退货退款我
歌词是我手拿着iPhone7是什么歌
双眼皮量6.5mm,去皮2mm是多宽
三在里怎么样?好不好?值不值得买?
西洋参6克切片有多少片
兰多湾宠物度假中心地址好找么,我有些事要过
求年代?
谜语大全及答案:改稿(猜一中国地名)的相
小麦芽率多少
有人找过吴尚易看八字吗? 大家感觉怎么样?
怎么吃冷冻的元霄,怎样煮冻元霄
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?