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

#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
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
怎么没渗出.我用win-tc和c-free都渗出了.

至于c[0]和c[1]为什么都是a...自己好好想想

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-10 11:41
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

不是益处吧
#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

2006-05-10 11:52
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
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc

很高兴能和大家一起学习程序! QQ:114109098
2006-05-10 11:57
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用工藤♀新一在2006-5-10 11:57:00的发言:
楼上的是对的~
但是为什么用puts函数会在正确答案后多了一些乱码呢?
我用是的win-tc

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

2006-05-10 12:00
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
乱码是因为用puts时没有终止符'\0'

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

你再仔细算算吧

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


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-10 12:05
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
楼主把最后一个元素都赋值了,'\0'丢掉了,当然有问题

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 12:17
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.041068 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved