#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
----------------解决方案--------------------------------------------------------
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc
我想知道的是为何前面有两个a.?
----------------解决方案--------------------------------------------------------
乱码是因为用puts时没有终止符'\0'
a[1]=a[0]结束后
--i正好为0
你再仔细算算吧
[此贴子已经被作者于2006-5-10 12:07:58编辑过]
----------------解决方案--------------------------------------------------------
楼主把最后一个元素都赋值了,'\0'丢掉了,当然有问题
----------------解决方案--------------------------------------------------------
乱码是因为用puts时没有终止符'\0'
a[1]=a[0]结束后
--i正好为0
你再仔细算算吧
你的意思是说
c[1]=c[0]结束后
--i正好为0
还会运行一次c[0], 得到c[6] = "abcd"中的c[0]=a.
----------------解决方案--------------------------------------------------------
楼主把最后一个元素都赋值了,'\0'丢掉了,当然有问题
原来这样呀. 谢谢.
----------------解决方案--------------------------------------------------------