C语言 清除字符数组中的指定字符 #include<stdio.h> intmain(){ char s[80], c; int j,

C语言 清除字符数组中的指定字符
#include<stdio.h>
intmain(){
char s[80], c;
int j, k;
printf("Enter a string: ");
gets(s);
printf("Enter a character: ");
c=getchar();
for(j=k=0; s[j]!='\0'; j++)
if(s[j]!=c)
s[k++]=s[j];
s[k]='\0';
printf("\n%s",s);
return0;
}

这里面的k是怎么变化的哟,如果不是相同字符,k++之后去掉的s[k]是不是已经是加了一的了哟 如果是去掉的s[0] 再次循环的时候k还是没有变 不是又把之前保留的字符去掉了吗? 哎呀 好混啊

s[k++] 是先赋值, k再自加。 

等效于

for(j=k=0; s[j]!='\0'; j++)
    if(s[j]!=c)
    {
        s[k]=s[j];
        k++;
    }

也就是 对于不等于c的字符, 把它复制到前面来。 覆盖掉原本的。

这样就起到了去除等于c的目的。 

温馨提示:答案为网友推荐,仅供参考
相似回答