第一次复制后字符串内容为are you!而此时i已经变为4了,而新字符串中的空格下标为3,所以不会再进行字符串复制了。
因为你复制之后,i没有清零,继续增加,后面没有空格了呀
应该是因为strcpy()函数复制字符串时,新的字符串"are you!"覆盖了原来的字符串的原因,注释如下:
#include <stdio.h>
#include <string.h>
int main(void){
int i;
char a[] = "How are you!";
for(i=0;a[i];i++){
// 当当前字符是空格时,则把空格后面的字符直到字符串结束都复制到字符数组开始
// 第一次遇到空格时,是在How单词后面-下标为3,然后把"are you!"复制到字符数组开始
//然后再判断下一个字符时,即在下标为为4的字符开始,即字符'y',直到字符串结束再无空白字符
//所以打印字符串结果时,就是 "are you!"
if(a[i]==' '){
strcpy(a,&a[i+1]);
//printf("i=%d,a=%s\n",i,a);
}
}
printf("%s\n",a);
return 0;
}