删除字符过程中遇到的问题

请大家看看代码哪里出了问题,有两个没过

img

img

void delchar( char *str, char c ){

    int i=0,j;

   

    while(str[i]!='\0'){
        if(str[i]==c){
            j=i;
            while(str[j]!='\0'){//当找到相同的时把后面整体往前挪一位//
                str[j]=str[j+1];
                j++;
            }
            
        }
        i++;
    }
    
}


```c
void delchar(char* str, char c) {
    int i = 0, j;
    while (str[i] != '\0') {
        if (str[i] == c) {
            j = i;
            while (str[j] != '\0') {//当找到相同的时把后面整体往前挪一位//
                str[j] = str[j + 1];
                j++;
            }
            i = 0;
        }
        else
            i++;
    }
}

```

其实不需要用两个while循环啊!直接一个while循环即可啊!参考如下:

void delchar( char *str, char c ){
 
    int i=0,j=0;
    while(str[i])
    {
        if(str[i]!=c)
        {
            str[j++] = str[i];
        }
        i ++;
    }

    str[j] = '\0';
}



```c
void delchar(char* str, char c) {
    int i = 0, j;
    while (str[i] != '\0') {
        if (str[i] == c) {
            j = i;
            while (str[j] != '\0') {//当找到相同的时把后面整体往前挪一位//
                str[j] = str[j + 1];
                j++;
            }
            i = 0;
        }
        else
            i++;
    }
}

```