电大C语言程序设计 第四章,第四大题,第2小题,该怎么解决

电大C语言程序设计 第四章,第四大题,第2小题
题目如下:
从键盘上输入一行字符串,假定该字符串的长度不超过50,试统计出该串中每一种10进制数字字符的个数并输出
我做的如下,但是编译总是说illegal case;小弟不明白了,求高人指导
#include<stdio.h>
#include<string.h>
#define N 51
void main()
{
int c0=0,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
int i;

char a[N];
printf("请输入一行字符,不超过50个:");
gets (a);
for(i=0;i<50;i++)
while(a[i])
{
switch(a[i])
case'0':c0++;break;
case'1':c1++;break;
case'2':c2++;break;
case'3':c3++;break;
case'4':c4++;break;
case'5':c5++;break;
case'6':c6++;break;
case'7':c7++;break;
case'8':c8++;break;
case'9':c9++;break;
}
printf("c0=%d,c1=%d,c2=%d,c3=%d,c4=%d,c5=%d,c6=%d,c7=%d,c8=%d,c9=%d\n",c0,c1,c2,c3,c4,c5,c6,c7,c8,c9);
}

------解决方案--------------------
C/C++ code

#include<stdio.h>
#include<string.h>
#define N 51
void main()
{
    int c0=0,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
    int i;
    
    char a[N];
    printf("请输入一行字符,不超过50个:");
    gets (a);

    i = 0;
    while(a[i] != '\0')
    {
        switch(a[i])
        {
            case'0':c0++;break;
            case'1':c1++;break;
            case'2':c2++;break;
            case'3':c3++;break;
            case'4':c4++;break;
            case'5':c5++;break;
            case'6':c6++;break;
            case'7':c7++;break;
            case'8':c8++;break;
            case'9':c9++;break;
        }
        ++i;
    }
    printf("c0=%d,c1=%d,c2=%d,c3=%d,c4=%d,c5=%d,c6=%d,c7=%d,c8=%d,c9=%d\n",
        c0,c1,c2,c3,c4,c5,c6,c7,c8,c9);
}