删除指定字符 为什么只能删掉一个,其他符合的删不掉


#include<stdio.h>
#include<string.h>
void DelChar(char *str,char c);
int main(){    
    char x;
    scanf("%c",&x);
    getchar();
    char a[100];
    gets(a);
    DelChar(a,x);
    puts(a);
    return 0;  
}
void DelChar(char *str,char c){
    int i,j,k;
    for(i=0;i<100;i++){
        if(str[i]==c){
            k=i;
            for(i=k;i<100;i++) 
                str[i]=str[i+1];    
            }
    }
}

#include<stdio.h>
#include<string.h>
void DelChar(char* str, char c);
int main() {
    char x;
    scanf("%c", &x);
    getchar();
    char a[100];
    gets_s(a);
    DelChar(a, x);
    puts(a);
    return 0;
}
void DelChar(char* str, char c) {
    int i, j, k;
    for (i = 0; i < 100; i++) {
        if (str[i] == c) {
            k = i;
            for (j = k; j < 100; j++)
                str[j] = str[j + 1];
        }
    }
}

两个循环都用到i会出问题
第二个for的i改成j

img


#include<stdio.h>
#include<string.h>
void DelChar(char *str,char c);
int main() {
    char x;
    scanf("%c",&x);
    getchar();
    char a[100];
    gets(a);
    DelChar(a,x);
    puts(a);
    return 0;
}
void DelChar(char *str,char c) {
    int i,j,k;
    for(i=0; i<strlen(str); i++)
    {
        if(str[i]==c)
        {
            k=i;
            for(j=k; j<strlen(str); j++)
                str[j]=str[j+1];
        }
    }
}

第二个for循环换一个变量,不要使用 i