c语言 函数strcpy是完全覆盖吗?

如下代码:void t1(){ char a[]="abcedfg" ; char b[]="XYZ"; strcpy(a,b); puts(a); tn(); }c-free,vs2012 输出:XYZ 但是谭浩强第四版 书上说 是部分覆盖 。难道是 这连个软件没有遵循c标准,还是谭浩强说错了?感觉谭浩强很权威的啊
2026年09月28日 13:30
有1个网友回答
网友(1):

内存里是部分覆盖了,你看以在查看内存看看。
输出XYZ我认为是因为puts(a);这样之输出一个字符串;
覆盖后数组a的前三个字节是XYZ,第四字节是结束标志\0;
第五字节开始是dfg,所以你写puts(&(a[4])); 就可以输出dfg