| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:字符一维数组运行结果不对?
取消只看楼主 加入收藏
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:4 
字符一维数组运行结果不对?

#include "stdio.h"

int main(void)
{
int i = 5;
char c[6] = "abcde";

do
{
c[i] = c[i-1];
}
while (--i > 0);
puts (c);
getch ();
return 0;
}

运行的结果为aabcdeG, G是怎么来的? 数组没有溢出呀.

如果把c[6] = "abcd"; 运行的结果为aabcd. 为什么c[0]和c[1]都为a?

搜索更多相关主题的帖子: 字符 结果 运行 
2006-05-10 11:32
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
我用的DEV C++, 没有渗出呀.

就是因为想不通,才发贴的呀. 版主就解释一下吧. 谢谢.

当i=1的时候, --i为0, loop就已经结束了. 另,如果没有结束, 当i=0的时候 c[0] = c[0-1]; c[-1]不存在吧.
2006-05-10 11:53
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用工藤♀新一在2006-5-10 11:57:00的发言:
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc

我想知道的是为何前面有两个a.?

2006-05-10 12:00
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用SunShining在2006-5-10 12:05:00的发言:
乱码是因为用puts时没有终止符'\0'

a[1]=a[0]结束后
--i正好为0

你再仔细算算吧

你的意思是说
c[1]=c[0]结束后
--i正好为0

还会运行一次c[0], 得到c[6] = "abcd"中的c[0]=a.

2006-05-10 12:47
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用论坛在2006-5-10 12:17:00的发言:
楼主把最后一个元素都赋值了,'\0'丢掉了,当然有问题

原来这样呀. 谢谢.

2006-05-10 12:51
快速回复:字符一维数组运行结果不对?
数据加载中...
 
   



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

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