当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > scanf函数的内存越界问题一
scanf函数的内存越界问题一
时间:2016-12-14作者:华清远见

scanf函数的参数部分要求对变量进行取地址,由此我们知道,我们对是这个变量所在的那块内存进行的操作,这里就会产生一个问题:内存越界:

1.如:

输入:

12345

结果:

从结果看当scanf以%s字符串格式输入超过数组a[5]范围时,会发生内存越界。这样a[5]里的数据不能看做字符串,因为不是以\0结尾的,这种内存越界发生时,会出现莫名其妙的程序运行结果。

2、%mc宽度内存越界测试程序

输入:

由此我们可以看出,scanf并没有把多余的字符丢掉,而是存储在连续的存储空间,至于为什么a[1]为5,那是因为5把之前赋予的1给覆盖掉了。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)