C语言字符数组输出的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:31:25
#include <stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
int k,i,z=0;
char str1[15]="ad min ";
char str2[20];
char tem;
k=strlen(str1);
for(i=0;i<k;i++)
{
if(isspace(str1[i]))
{
tem=str1[i];
str1[i]=str1[i+1];
str1[i+1]=tem;
z++;

}

}
if(z>0)
{
strncpy(str2,str1,k-z);

}
printf("%s",str2);
return 0;
}

这个str2输出来有乱码,怎么回事?
奇怪,为什么要初使化,我后面不是把值给它了吗?

str2没有初始化

数组没有初始化的话,里面存放的是一些野数据,
你虽然后面把值赋给它了,但是str2有20个数组成员,
没被赋值的那些,里面存放的还是一些野数据,
所以最后输出的时候,也一并被输出来了

另外,数组声明时初始化是一个良好的编程习惯,注意培养

char str2[20] = {0}; 把这个字符数组初始化就没乱码了。