上课突发奇想,strcpy(str1,str2)函数中,如果str2中的字符数少于str1中的,那str1中剩余的字符是否会保留
测试代码如下
#include#include int main (void) { char a[] = "hello world"; char b[] = "nihao"; strcpy(a,b); printf("%s",a); return 0; }
这样的输出结果是“nihao”,猜测应该是printf %s 检测到/0之后停止输出
于是便尝试单个字符输出
#include#include int main (void) { char a[] = "hello world"; char b[] = "nihao"; strcpy(a,b); for(int i = 0;i<12;++i) printf("%c",a[i]); return 0; }
单个字符输出的结果为“nihao world”
很奇怪的是控制台并没有输出“/0”这个字符而是空格
输出ascii码后发现结果为/0的0,而不是空格的32。该结果说明/0本质上是被输出了,但是没有被控制台显示。



