本帖最后由 maozone 于 2015-07-11 15:53 编辑
麻烦请教一下,这段代码为什么会出现下面运行结果:- #include <stdio.h>
- int main()
- {
- int iLen;
- char str[1024];
- char sub[128];
- char *p1;
- char *p2;
-
- strcpy(str, "1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20");
- strcpy(sub, "12");
- printf("sub=%s\nstr=%s\n", sub, str);
- p1 = strstr(str, sub);
- iLen = strlen(sub) + 1;
- p2 = p1 + iLen;
- strcpy(p1, p2);
- printf("str=%s\n", str);
- }
复制代码 sub=12
str=1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20
str=1,2,3,4,5,6,7,9,10,11,13,14,15,17,17,18,19,20
拷贝后结果不对,16没有了,而17重复。
strcpy这里改成memmove,或者直接用指针逐个赋值就没问题。
但是一般来说p2>p1时用strcpy应该不会有问题阿! |