请问下面代码哪里出错了,感觉逻辑没错

img


请问下面代码哪里出错了,感觉逻辑没错

#include<stdio.h>
#include<string.h>
int main(){
    int i,j,k;
    char A[10000],B[10000];
    for(i=0;i<10000;i++)
    {
        scanf("%c",&A[i]);
        if(A[i]=='\n') break;
    }
    for(i=0;i<1000;i++){
        scanf("%c",&B[i]);
        if(B[i]=='\n') break;
    }
    for(i=0;i<(strlen(A)-1);i++){
        for(j=0;j<(strlen(B)-1);j++){
            if(A[i]==B[j]){
                A[i]=NULL;
                for(k=i+1;k<(strlen(A)-1);k++){
                    A[k-1]=A[k];
                }
            }
        }
    }
        for(i=0;i<strlen(A);i++){
            printf("%c",A[i]);
        }
return 0;
}

#include<stdio.h>
#include<string.h>
int main(){
    int i,j,k;
    char A[10000],B[10000];
    for(i=0;i<10000;i++)
    {
        scanf("%c",&A[i]);
        if(A[i]=='\n') break;
    }
    A[i]='\0';//字符串结尾标志
    
    for(i=0;i<1000;i++){
        scanf("%c",&B[i]);
        if(B[i]=='\n') break;
    }
    B[i]='\0';//strlen以'\0'为结束符计算长度
    
    for(i=0;i<strlen(A);i++){
        for(j=0;j<strlen(B);j++){
            if(A[i]==B[j]){
                for(k=i;k<strlen(A);k++){
                    A[k]=A[k+1];//前移包括'\0'
                }
                
            }
        }
    }
        
    printf("%s",A);
    return 0;
}