为何将字符窜的一部分存入到另一个数组出现乱码
为什么将字符窜的一部分存入到另一个数组出现乱码?
代码如下:
#include <stdio.h>
#include <string.h>
main()
{
char *temp="we1234";
char word[10];
char digit1[2];
char digit2[2];
strncpy(word,temp,2);
strncpy(digit1,temp+2,2);
strncpy(digit2,temp+4,2);
puts(digit1);
getchar();
}
显示的是:12后面有乱码,因为digit只定义了两位,为什么会有后面的乱码?
我把char word[10],改成了static word[10]就可以了
但是觉得digit和word[10]没什么联系,很奇怪啊
------解决方案--------------------
strncpy(digit1,temp+2,2),只复制2个字符,而且digit1也没初始化,输出12后,没遇到结束符 \0(即0x0),继续向后,直到遇见\0,或者访问违规崩了。
把几个数组初始化为0
char word[10]={0};
代码如下:
#include <stdio.h>
#include <string.h>
main()
{
char *temp="we1234";
char word[10];
char digit1[2];
char digit2[2];
strncpy(word,temp,2);
strncpy(digit1,temp+2,2);
strncpy(digit2,temp+4,2);
puts(digit1);
getchar();
}
显示的是:12后面有乱码,因为digit只定义了两位,为什么会有后面的乱码?
我把char word[10],改成了static word[10]就可以了
但是觉得digit和word[10]没什么联系,很奇怪啊
------解决方案--------------------
strncpy(digit1,temp+2,2),只复制2个字符,而且digit1也没初始化,输出12后,没遇到结束符 \0(即0x0),继续向后,直到遇见\0,或者访问违规崩了。
把几个数组初始化为0
char word[10]={0};