#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char a, b, c, d;
scanf("%c", &a);
scanf("%c", &b);
scanf("%d", &c);
scanf(",%d", &d);
printf("%c %c %c %c", a, b, c, d);
return 0;
}
如果将这个代码中输入aa97,98则a,b,c的值全部都会变为0; b;
因为在输入c的时候由于是以%d的形式输入所以是四个字节而c只占用1个字节所以就将a和b的内存覆盖了而输入d的时候同理将a的又覆盖了。
改:#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char a, b;
int c, d;
scanf("%c", &a);
scanf("%c", &b);
scanf("%d", &c);
scanf(",%d", &d);
printf("%c %c %c %c", a, b, c, d);
return 0;
}
缓冲区溢出案例
最新推荐文章于 2024-08-21 14:31:32 发布