删除字符,不知道自己哪儿错了

img

img


自己运行都是正确的,但是系统显示错误,不知道自己是否还有情况没考虑到,想问问大家,谢谢了

img


变成这样了🤯

我都替你着急,采纳我了还要再问别人,来问我呀,我给你写好了。如下

#include <stdio.h>

int main() {
    char str[101], a;
    int i, j;
    // 输入到 str
    for ( i = 0 ; i < 101 ; i++ ) {
        scanf("%c", &a);
        if (a == '\n') {
            // 如果按了回车的话就给字符串加结尾并退出输入
            str[i] = '\0';
            break;
        } else {
            // 输入的接在 str 的最后面
            str[i] = a;
        }
    }
    // 输入要删除的
    scanf("%c",&a);
    // 循环遍历 str 如果到了结尾就退出
    for ( i=0 ; str[i] != '\0' ; i++ ) {
        // 如果 这个位置要被删除
        if( str[i] == a ){
            // 这个位置后面的每一位都往前移一位 移到结尾为止
            for( j = i ; str[j] != '\0' ; j++  ){
                str[j] = str[j+1];
            }
            // i 自减 1 避免下一个也要删,却因为往前移到了 i 的位置 导致 没有被删除
            i--;
        }
    }
    printf("%s",str);
    return 0;
}

每次删掉一个字符末尾\0也应该向前移动哦