|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 洛城闻笛 于 2018-8-1 21:17 编辑
- #include<stdio.h>
- #include <string.h>
- int main()
- {
- char a[20];
- printf("请输入字符串:");
- scanf("%[^\n]",a);
- printf("a=%s\n",a);
- printf("字符串长度=%u",strlen(a));
- }
复制代码
溢出了只是你没有报错而已,要想测试这个问题。你在char a[20] 前后定义一些变量。溢出后有几率覆盖前后定义的变量
char a;char b[20];char c;
同一个栈中 申请a空间和b空间和C空间,他们有几率地址之间没有间隙,但是不可抱有侥幸心里,都在栈中,是有几率计算值错误的
- #include "stdio.h"
- int main(){
- char a='a';
- char b[20];
- char c='c';
- int i;
- printf("%p %p %p\n",&a,b,&c);
- printf("%d \n",(b)-(&c) );
- printf("a=%c c=%c\n",a,c);
- for(i=-(b-&c);i<20;i++){
- *(b+i)='f';
- }
- printf("a=%c c=%c\n",a,c);
- }
复制代码
|
-
程序结果
-
|