一个显示出现次数的程序,为什么输入数字显示的不对啊,想不出来了


/*输出范例:
Enter a number: 41271092
Digit:    0    1    2    3    4    5    6    7    8    9
Occurrences:    1    2    2    0    1    0    0    1    0    1
*/
#include<stdio.h>
int main(){
    printf("Enter a number: ");
    char str[10];
    scanf("%s",&str);
    
    int i,p;
    int x0=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,x7=0,x8=0,x9=0;
    for (i=0;i<10;i++){
        p=str[i];
        switch(p){
            case 0: x0=x0+1; break;
            case 1: x1=x1+1; break;
            case 2: x2=x2+1; break;
            case 3: x3=x3+1; break;
            case 4: x4=x4+1; break;
            case 5: x5=x5+1; break;
            case 6: x6=x6+1; break;
            case 7: x7=x7+1; break;
            case 8: x8=x8+1; break;
            case 9: x9=x9+1; break;    
            defalut: printf("");break;
            printf("%d",p);
        }
    }
    
        printf("Digit:        0    1    2    3    4    5    6    7    8    9\n");
    printf("Occurrences:     %d %d %d %d %d %d %d %d %d %d",x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);
    return 0;
}

修改见注释处,供参考:

/*输出范例:
Enter a number: 41271092
Digit:    0    1    2    3    4    5    6    7    8    9
Occurrences:    1    2    2    0    1    0    0    1    0    1
*/
#include<stdio.h>
int main(){
    printf("Enter a number: ");
    char str[10];
    scanf("%s",str); //scanf("%s",&str);
    int i,p;
    int x0=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,x7=0,x8=0,x9=0;
    for (i=0;i<10;i++){
        p=str[i]-'0'; //p=str[i];
        switch(p){
            case 0: x0=x0+1; break;
            case 1: x1=x1+1; break;
            case 2: x2=x2+1; break;
            case 3: x3=x3+1; break;
            case 4: x4=x4+1; break;
            case 5: x5=x5+1; break;
            case 6: x6=x6+1; break;
            case 7: x7=x7+1; break;
            case 8: x8=x8+1; break;
            case 9: x9=x9+1; break;
            defalut: printf("");break;
            printf("%d",p);
        }
    }
    printf("Digit:         0    1    2    3    4    5    6    7    8    9\n");
    printf("Occurrences:   %d     %d    %d   %d   %d   %d   %d   %d   %d    %d\n",x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);
 
    return 0;
}

这到底是为什么呢,输出的东西一直都是一样的。。。。