关于程序的运行结果?

#include <stdio.h>
void fun(char str[])
{
int i, j;
for (i = 0,j= 0; str[i]!='\O'; i++)
if (str[i]!='b')
str[j++]= str[i];
str[j]='\0';
}
int main()
{
char str[] ="abcdef";
fun(str);
printf("str=‰s\n", str);
}

结果是 :acdef .
首先i=0,j=0. if判断符合条件, str[j=0] 赋值为str[i=0],即字符'a',
然后 j++变为1,str[j=1]处存放一个空字符'\0'.


然后i=1,str[i=1]为字符'b',所以条件不满足,然后执行str[j=1]存放一个空字符'\0'.


接着,i=2,j=1, 如首先那步一样,先存放str数组里面下标为i(2)位置的字符(‘c')到下标为j(1)位置,
然后j++,j=2存放一个空字符。接下来同样 依次在str数组下标j的位置,依次被存入字符:‘d' , 'e' , 'f'.每次都在j后面一个位置加一个空字符。直到i=6,达到str数组的空字符位置,循环结束。


所以最后的打印结果为 “acdef".