现在的位置: 首页 > 综合 > 正文

scanf函数的内存越界问题

2014年07月07日 ⁄ 综合 ⁄ 共 263字 ⁄ 字号 评论关闭

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

输入:
12345
结果:

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

输入:

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

抱歉!评论已关闭.