问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

gets函数的问题

发布网友 发布时间:2023-07-13 23:55

我来回答

4个回答

热心网友 时间:2023-09-26 17:49

str属于局部变量,局部变量储存在程序的占空间中。
对于32位的程序,栈空间是严格4字节对齐的。
换句话说,如果局部变量占用的内存空间不是4的整数倍,编译器就会把它处理成4的整数倍
具体而言,局部变量 str[1]和str[4]是完全等价的。
如果你输入一个较长的字符串,肯定要出错。

另外,gets函数存在缓冲区溢出漏洞,使用gets函数的程序有缓冲区溢出的风险
如果读入str的是一个精心构造的字符串,就会引起缓冲区溢出,导致程序流程改变。

热心网友 时间:2023-09-26 17:50

你调试的时候看内存就会发现,你输入的字符串虽然对程序来讲一定可用的内存有1个char存储空间,但是后面的栈中依然可用,所以还会打印出来,但是如果输入的字符串(长度和值)符合一定的条件,就会造成很严重的错误。这个也是gets类函数的一个先天的不足,会造成缓存区溢出

热心网友 时间:2023-09-26 17:50

错误的做法不一定都会导致不愉快的结果。。你若在linux下这样做肯定会报告段错误。。。

热心网友 时间:2023-09-26 17:51

不会崩溃吗?
char str1[1];这个字符串 无法容纳任何输入字符,因为字符串最后必须有个\0结尾
printf("%s\n",str1); 一定会引起崩溃,你测试下看看追问我用的codeblocks,没崩溃

追答哦 那你使用VC6或者VS就会崩溃的 你可以测试下

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 linux下nvida geforce 9600 gso的驱动哪个大神能提供下载的? NVIDIA GeForce 9600 GOS显卡驱动 c语言为什么有函数危险一说啊? 比如gets()的溢出操作等; 射手座喜欢啥样的女孩子? 多肉植物奔龙如何扦插 车窗上的雪怎么除 眼部除皱手术价格 特殊工种自己去办退休需要些什么 三省?六部?三院?各指什么 求推荐杭州中考语文现代文阅读教辅 杭州 初中生 教辅类书籍哪些比较好 梦见在梦里叫自己的爸爸的预兆 西游记九十四回主要内容概括 怎么发送文件夹到别人的邮箱 夏天,知了在树上叫什么呢? 今生你是我逃不开的劫,来世愿与你殊途同归 12年福克斯两厢自动1.6质量如何?耗油量大吗? 电信号码有没有网卡卖 电信无线网卡有没有卖的? 所以我够不着一些东西的英文过去式 昂达9600GT DDR3显卡驱动最新版的去哪里下载啊 NVIDIA GeForce 9600 gs0驱动 目前昂达9600GSO 384M GD3这个卡最好的驱动是哪个,求地址 求翔升GF9600GSO最佳驱动? NVIDIA GeForce 9600 GSO 512M 显卡驱动那里有 仁宗盛治有多可怕(仁宗盛治其实并非那么美好) 喜欢轻音乐的人性格是怎样的一般? 哈弗H2哪个颜色好看,大家谈谈 为什么蟹爪兰不能养在卧室 滁州粮食储备库宿舍什么时候拆迁 滁州市山头队什么时候能拆呀!!! 有谁知道??? 奉化山头朱村会拆迁吗 专门写歌的人叫啥 中国写歌词最多的人是谁? 作词人是什么作歌词的吗 阿古茹专属bgm怎么用吉他弹出来? 光阳K+机油是那里生产的? 哪里有靠谱的windows7家庭普通版原版镜像下载 windows7sp1原版镜像64位系统哪个网址下载好 Quietness wins time. More hurry,less speed.分别是什么意思 中文