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++)也就是 对于不等于c的字符, 把它复制到前面来。 覆盖掉原本的。
这样就起到了去除等于c的目的。