首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问 数组'\0' 有关问题

2012-02-27 
请教 数组\0 问题声明一个字符数组charstr[]{ a , b , c , d }然后从数组第0个元素开始判断是否 \0

请教 数组'\0' 问题
声明一个字符数组
char   str[]   =   { 'a ', 'b ', 'c ', 'd '};
然后从数组第0个元素开始判断是否   == '\0 '
如果不为 '\0 '   则输出打印
但是结果除了abcd以外还有五个乱码,这是怎么回事?

如果改为   char   str[50]   =   { 'a ', 'b ', 'c ', 'd '};   则正常只输出abcd
完整源码:
#include   <stdio.h>

void   main()   {
char   str[]   =   { 'a ', 'b ', 'c ', 'd '};
char   c;
int   i   =   0;
while(c=str[i]!= '\0 ')   {
printf( "%c\n ",str[i]);
i   ++;
}
}

[解决办法]
char str[] = { 'a ', 'b ', 'c ', 'd '};
只申请了4个空间,分别对应str[0]-str[3],接着str[3]后面的连续内存中你并不知道存放的是什么。按照你运行的结果可以知道,第10个内存空间是0,所以结束显示
char str[50] = { 'a ', 'b ', 'c ', 'd '};
是申请50个空间,你初始化abcd以后其他空间会自动帮你初始化为0
[解决办法]
char str[] = { 'a ', 'b ', 'c ', 'd '};
这个数组没有结束符。只有abcd
char str[50] = { 'a ', 'b ', 'c ', 'd '};
由于你的字符数小于数组长,编译器会帮你添加0进去。所以这个数组可以结束。
[解决办法]
char str[] = "abcd "
[解决办法]
char str[] = { 'a ', 'b ', 'c ', 'd ', '\0 '};

热点排行