当前位置: 代码迷 >> C语言 >> 字符一维数组运行结果不对?
  详细解决方案

字符一维数组运行结果不对?

热度:102   发布时间:2006-05-10 11:32:00.0
字符一维数组运行结果不对?

#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?

搜索更多相关的解决方案: 字符  结果  运行  

----------------解决方案--------------------------------------------------------
怎么没渗出.我用win-tc和c-free都渗出了.

至于c[0]和c[1]为什么都是a...自己好好想想
----------------解决方案--------------------------------------------------------

不是益处吧
#include "stdio.h"

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

do
{
c[i] = c[i-1];
}
while ( --i>0);
for(i=0;i<6;i++)
printf("%c",c[i]);
getch ();
return 0;
}

这样就行拉
我的是WIN-TC


----------------解决方案--------------------------------------------------------
我用的DEV C++, 没有渗出呀.

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

当i=1的时候, --i为0, loop就已经结束了. 另,如果没有结束, 当i=0的时候 c[0] = c[0-1]; c[-1]不存在吧.
----------------解决方案--------------------------------------------------------
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc
----------------解决方案--------------------------------------------------------
以下是引用工藤♀新一在2006-5-10 11:57:00的发言:
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc

我想知道的是为何前面有两个a.?
----------------解决方案--------------------------------------------------------
乱码是因为用puts时没有终止符'\0'

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

你再仔细算算吧

[此贴子已经被作者于2006-5-10 12:07:58编辑过]


----------------解决方案--------------------------------------------------------
楼主把最后一个元素都赋值了,'\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-5-10 12:17:00的发言:
楼主把最后一个元素都赋值了,'\0'丢掉了,当然有问题

原来这样呀. 谢谢.


----------------解决方案--------------------------------------------------------
  相关解决方案