| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 761 人关注过本帖
标题:[求助]新手求助,为什么输入字符能打过数组的限制
只看楼主 加入收藏
cjk87927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-3-25
收藏
 问题点数:0 回复次数:5 
[求助]新手求助,为什么输入字符能打过数组的限制

RT!!

为什么输入字符能打过数组的限制,我输10进去也行
#include<stdio.h>
main()
{
int i;
char a[5];
gets(a);
for (i = 0; a[i] != '\0'; i++){
printf("%d ", i);
printf("%d i=%d\n", a[i], i);
}
printf("%d\n", a[i]);
getchar();
}

搜索更多相关主题的帖子: 字符 输入 int 
2007-07-22 12:55
ZSXCT
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-7-10
收藏
得分:0 

循环结束条件是\N,如果你改为<5,看结果.

2007-07-22 17:43
zhou
Rank: 1
等 级:禁止发言
帖 子:429
专家分:0
注 册:2006-6-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-03-30 17:07
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
gets()的缺陷,其不检查目标数组是否可以容纳输入,多出的字符将会简单地溢出到相邻内存区。很早之前,这个BUG被利用,引发了UNIX网络流行的“蠕虫”病毒。

[[it] 本帖最后由 now 于 2008-3-30 23:12 编辑 [/it]]

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-03-30 23:01
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
ls说的没错。《c 专家编程》里有一小段关于这个漏洞的说明,可以参考下

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-31 16:06
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
没人告诉你gets能自动判断输入是否越界吧?

多出的字符串放在了相邻的内存中,这就是常说的内存溢出

2008-03-31 22:19
快速回复:[求助]新手求助,为什么输入字符能打过数组的限制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036035 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved