| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3058 人关注过本帖
标题:运行结果出现'烫'字
只看楼主 加入收藏
星星鱼虾蟹
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-6-2
收藏
得分:0 
以下是引用Knocker在2007-7-23 13:34:21的发言:
for(i=0;s[i];i+=2)

程式逻辑性错误

可能不同编译器有不同的处理吧...


2007-07-23 14:21
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
越界了
for(i=0;s[i];i+=2)
你的意思应该是当s[i]为'\0'的时候就结束for循环,但是你的i+=2,使i的步进为2就有可能跳过s[i]='\0'的情况,所以这时候你还得测试一下s[i+1]的情况是否为'\0'
for(i=0;s[i]&&s[i+1];i+=2)


Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-07-23 17:12
asxiaofuchao
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-23
收藏
得分:0 
在TC中能输入输出汉字吗?
2007-07-23 17:17
卷入内核
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-2
收藏
得分:0 
学习!这个好像见过
2007-07-23 17:22
Oscar_0049
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-6-29
收藏
得分:0 
以下是引用boot2046在2007-7-23 17:12:01的发言:
越界了
for(i=0;s[i];i+=2)
你的意思应该是当s[i]为'\0'的时候就结束for循环,但是你的i+=2,使i的步进为2就有可能跳过s[i]='\0'的情况,所以这时候你还得测试一下s[i+1]的情况是否为'\0'
for(i=0;s[i]&&s[i+1];i+=2)


不是从字符串结束开始,以后都是'\0'么?


如果不能改变环境,那就要适应环境!
2007-07-23 21:00
spitcold
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-20
收藏
得分:0 
回复:(Oscar_0049)以下是引用boot2046在2007-7-23 ...
不一定的.也许内存后刚好有数据
2007-07-23 21:13
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
c语言里并不能自己保证'\0'结束后都是‘\0'
除非你自己指定,也就是说你这个程序还可以这样改
char s[100], t[100];
memset(s, '\0', sizeof(s)); //加上这句,让字符串结束后的数组其他位置都为'\0'
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is : %s\n", t);


Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-07-24 08:59
快速回复:运行结果出现'烫'字
数据加载中...
 
   



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

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