| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:求人解答啊啊啊啊急啊!!!
只看楼主 加入收藏
bid2938692
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2009-9-23
结帖率:76.92%
收藏
 问题点数:0 回复次数:7 
求人解答啊啊啊啊急啊!!!
#include "stdio.h"
#include "conio.h"
int main()
{
     char s[10];
     int i;
     gets(s);
     for(i=0;s[i];i++)
     {     if(s[i]>='A'&&s[i]<='Z')
             s[i]=2*'A'-s[i]+25;
         else if(s[i]>='a'&&s[i]<='z')
               s[i]=2*'a'-s[i]+25;
     }
     puts(s);
     getch();
     return 0;
}
上述的s[10]只定义了10个变量
但是我输了20个变量都没有提示错误或溢出这是怎么回事呢???
实在是不明白,一般不是没有定义的变量都会提示错误
搜索更多相关主题的帖子: 解答 
2009-11-17 14:04
bid2938692
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2009-9-23
收藏
得分:0 
想了个下午还是想不懂
2009-11-17 19:20
雾里偷花
Rank: 2
来 自:社会
等 级:论坛游民
帖 子:45
专家分:33
注 册:2009-10-27
收藏
得分:0 
回复 楼主 bid2938692
应该是循环体没有设定跳出条件吧!
2009-11-17 19:43
fgchg911
Rank: 4
等 级:业余侠客
威 望:1
帖 子:131
专家分:204
注 册:2009-9-6
收藏
得分:0 
这是c语言的设计问题,像这种数组溢出是不检查的,
2009-11-17 19:51
fgchg911
Rank: 4
等 级:业余侠客
威 望:1
帖 子:131
专家分:204
注 册:2009-9-6
收藏
得分:0 
这种问题只能靠你自己去规范,自己检查
if(strlen(s) > 9)
{
fprintf(stderr,"error");
}
随便写的,不知道是否符合习惯
2009-11-17 19:55
bid2938692
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2009-9-23
收藏
得分:0 
有人说gets不会理会数组的大小 是这样么????
如果是那定义s[100]的意义何在呢??
2009-11-17 20:11
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
gets以回车为结束,空格不算
虽然只定义了a[10],但输入多少个编译器可不管,因为gets函数只认回车
同时,puts也会输出以a[0]的地址起始的元素,直到回车。
看似与数组长度无关,but
a[9]之后的元素,编译器知道地址,按地址排序输出,你知道么,你要怎么用?
而且如果a[9]后面的地址恰好存了很重要的数据,你强行占用,原来的数据就delete了
也许严格的编译器不允许这样

[ 本帖最后由 pgy 于 2009-11-17 20:44 编辑 ]

我可好玩啦...不信你玩玩^_^
2009-11-17 20:43
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
c不会检查下标越界的
2009-11-17 21:00
快速回复:求人解答啊啊啊啊急啊!!!
数据加载中...
 
   



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

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