'strcpy'功能无法正确复制

时间:2019-05-27 16:12:39

标签: c

当我尝试用当前字节复制下一个字节时,整个操作无法顺利进行。

memcpy或strncpy可以正常工作。

#include<stdio.h>
#include<string.h>
main()
{
char str[200] = "abcdefghijklmnopqrstuvwxyz";

printf("before %s\n", str);
strcpy(str, str+1);
printf("after  %s\n", str);

return;
}

预期输出:

在abcdefghijklmnopqrstuvwxyz之前
在bcdefghijklmnopqrstuvwxyz之后

实际输出:

在abcdefghijklmnopqrstuvwxyz之前
在bcdefghijklnopqqrstuvwxyz之后

通知'm'丢失,'q'重复两次。

1 个答案:

答案 0 :(得分:2)

C standard about the strcpy function(特别是7.24.2.4p2)开始:

  

....如果在重叠的对象之间进行复制,则行为   未定义。