关键是要看懂fun这个函数的功能。下面的fun函数与你发的代码一样,只是在for语句范围内加了大括号,更清楚一些。
void fun(char str[])
{
int i,j=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' ')
str[j++]=str[i];
}
str[j]='\0';
}
第一次循环:i=0,j=0,str[i]='a'。str[j++]=str[i]后,j=1。依次类推;
第四次循环:i=3,j=3,str[i]=' '。语句str[j++]=str[i]不执行,j仍然等于3;
第五次循环:i=4,j=3,str[i]='a'。语句str[j++]=str[i]执行,空格被‘a'替换掉,之后j=4。
这个是先赋值,再++,就是前三次循环其实字符串没有变化,到第四次的时候是空格,那j就不++了,但是i还是要++,所以第四次会str[3]=str[4],这样不就把空格去掉了吗,这个str[j]应该是循环之外的,不知道你能不能听懂我说的!