教材上有这么个程序。#include "stdio.h"#include "string.h"main(){ char a[20]="abcde"; strcpy(&a[1],a); puts(a);我认为结果应该是aabcde,为什么出来的结果是aaaaaaa。
这个,你就应该看看strcpy函数的功能了,或是它的用法说明,
跟语法没有什么关系的.
像你们编程的时候,字符串的自我复制常见吗
当复制的源地址和目标地址有覆盖发生时会有不可预料的结果为了避免这种情况可以使用memmove#include "stdio.h"#include "string.h"
int main(){ char a[20]="abcde"; memmove(&a[1],a,sizeof(a)); puts(a);}
顺便说一下,你教材上的代码在我使用的gcc version 3.3.1和VC++6.0上的结果的确是你认为的。说明你编译器比较垃级
楼上的,我在VC++6.0里面运行了一下,结果确是aabcdd,怎么回事,谢谢