关于C语言字符串拷贝的奇怪问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:57:59
有两段代码:
---------Code_1---------
word[0]=tempStr[0];
word[1]=tempStr[1];
word[2]=tempStr[2];
word[3]=tempStr[3];
word[4]=tempStr[4];
word[5]=tempStr[5];
printf("%s",word);

----------Code_2--------------
for(i=0;i<6;i++)
{
word[i]=tempStr[i];
}
printf("%s",word);

为什么Code_1能正常输出字符串,而Code_2却输出的是乱码?
知道的请回答,谢谢~~

我不知道你的word和tempStr初值怎么样,在我的机子上用Win-TC两个代码运行结果都是一样,在输出正常字符之后就有乱码,因为输出格式为%s字符串时,是遇\0结束的,但是并没有这个值赋给word数组的尾部,所以就会输出内存中原来的信息。

为了验证会输出内存中原有的信息,我们可以用以下语句:
for(i=0;i<9;i++)
printf("%d",tempStr);
9是自己给定的任意比6大的数,这就发现原来的字符串的尾数就不是以\0结束,而在tempStr[5]之后还有字符输出,故以字符串形式输出,会输出之后的乱码