这两个的结果为什么不一样?

来源:百度知道 编辑:UC知道 时间:2024/06/27 04:22:38
程序一:
#include <stdio.h>
#include <string.h>
void main()
{
char a[10]="";
char b[]={'c','h','i','n','a'};
strcpy(a,b);
puts(a);
}
程序二:
#include <stdio.h>
#include <string.h>
void main()
{
char a[10]="";
char b[]={'c','h','i','n','a','\0'};
strcpy(a,b);
puts(a);
}
我先声明,我知道有更好的写法,我这样写是为了更理解c 语言,我的问题如下,程序一没有结果出来,而程序二很正常的显示结果,请大家帮小弟看看,原因出在哪里,谢了!

string.h里面的函数都是对字符串操作的。
字符串和字符数组的最大区别就是字符串是以'\0'结尾的字符数组。
第一个没有赋‘\0’。不是字符串,使用strcpy的时候会溢出。

第一个后面没有终止符号 ‘\0’。cpy的时候会溢出。
溢出了,结果就难说了。

第一个b[]中没有结束符'\0',复制时到a中后, a中也没有结束符,输出时会把a中的10个字符全部输出,后5个是内存中的随机值,看上去是乱码