printf输出数组最后多了两个乱码

#include <stdio.h>
#include <conio.h>
#define nn 26
int main(void)

{ int i;
char ch[nn];
for(i=0;i<nn;i++)
ch[i]=('a'+i);

//下边的方式输出字符从a到b没问题
for(i=0;i<nn;i++)
printf("%c",ch[i]);

//下边的方式输出字符从a到b没问题,但在后边多了两个乱码符号
printf("\n%s",ch);

getch();
return 0;
}

存在两个问题:

    数组ch没有进行初始化。

    使用数组保存字符串时,需要保留一位'\0',作为终止标记。


建议使用下记语句进行初始化。

char ch[nn + 1] = {0};

追问

我用char ch[nn] = {0};这样初始化了的,结果还是出错,原来是因为前边这些都已经被壶覆盖,要在后边一位初始化成0,也就是要让其结束,看懂了,谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答