当我尝试用当前字节复制下一个字节时,整个操作无法顺利进行。
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'重复两次。
答案 0 :(得分:2)
从C standard about the strcpy
function(特别是7.24.2.4p2)开始:
....如果在重叠的对象之间进行复制,则行为 未定义。