非黑莫白 发表于 2019-8-3 20:31:20

strcpy strcat问题

本帖最后由 非黑莫白 于 2019-8-3 20:33 编辑

char a[]="fish";
char b[]="fishc";

strcpy(a,b);

并没有报错,如果用a='a'甚至能赋值,但是不是说数组定义了把坑挖好之后就不能改了么,而且小甲鱼授课演示的时候也确实出问题了

Neverturnback 发表于 2019-8-3 23:32:24

a[] = "fish";看上去只有4个字符,那么a[]的大小就是4
实际上a[]的大小为5
a[] = "fish"赋值状况:
a = 'f'
a = 'i'
a = 's'
a = 'h'
a = '\0'
最后会加上一个\0来判断字符串的结束
所以a = 'a'是把\0的值覆盖掉了
现在你再用printf("%s", a)的话就会打印出一串乱码
页: [1]
查看完整版本: strcpy strcat问题