免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2379 | 回复: 14
打印 上一主题 下一主题

请教字符数组问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-06 16:09 |只看该作者 |倒序浏览
小弟重新检起c学习
各位帮忙
char name[2];
scanf("%s",name);
printf("%s",name);
这个字符数组才2个字节长度
可是我输入abcdefghijklm等字符回车
居然把abcdefghijklm全打印出来了,并且没错。
各位说一下原因?

论坛徽章:
0
2 [报告]
发表于 2006-05-06 16:34 |只看该作者
各位大虾帮忙啊

论坛徽章:
0
3 [报告]
发表于 2006-05-06 16:49 |只看该作者
这样编程迟早会出错的

论坛徽章:
0
4 [报告]
发表于 2006-05-06 16:57 |只看该作者
我想知道其中理由
为什么仍可以运行?
并且不抛错误?

论坛徽章:
0
5 [报告]
发表于 2006-05-06 17:33 |只看该作者
都来看看
谢谢了

论坛徽章:
0
6 [报告]
发表于 2006-05-06 18:22 |只看该作者
内存在栈上分配2个bytes空间,可能在name+2之后可访问(没被其它占用),而不产生溢出。比较随机性。这只是有可能不出错,但明显程序有问题。

论坛徽章:
0
7 [报告]
发表于 2006-05-06 22:29 |只看该作者
原帖由 softmyth 于 2006-5-6 16:57 发表
我想知道其中理由
为什么仍可以运行?
并且不抛错误?


你分配的2个字节后面的内存空间,恰好没有被使用。

论坛徽章:
0
8 [报告]
发表于 2006-05-06 23:30 |只看该作者
紧随着name后边再定义一个变量试试,name的输入,有的系统会core,有的系统不core会覆盖name后边定义变量的存储空间。

论坛徽章:
0
9 [报告]
发表于 2006-05-07 12:24 |只看该作者
开始也是这么想。
可是感觉理由有点牵强。

论坛徽章:
0
10 [报告]
发表于 2006-05-07 13:16 |只看该作者
能够打印出来,是由于所有的字符都存放到以name地址开始的连续内存里啦,且
这些连续内存没有含'\0'字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP