写一个程序读入一条句子中的所有单词,显示如下指定长度的单词的数目:假定句子以换行结束,单词间用空格分隔,并且每个单词长度不超过25个字符。 不知道代码出了什么问题


#include<stdio.h>
#include<string.h>
#define N 5
int a[N];
int main()
{
    char b[10000];
    printf("请输入一行字符:");
    gets(b);
    a[strlen(b)]='\0';
    scanf("%c",&b[0]);
    int n1;                                //单词字母数 
    int i=0;                              //字符串位置 
    while(i<strlen(b))
    {
        if(b[i]!=' ')
        {    
            n1=0;
            for(;b[i]!=' ';i++) n1++;
            switch(n1)
            {
                case 1:a[0]++;break; 
                case 2:case 3:case 4:case 5:a[1]++;break;
                case 6:case 7:case 8:case 9:case 10:a[2]++;break; 
                case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:a[3]++;break;
                default:a[4]++;
            }
        }
    }
    printf("长度为1的单词数:%d\n",a[0]);
    printf("长度在2到5的单词数:%d\n",a[1]);
    printf("长度在6到10的单词数:%d\n",a[2]);
    printf("长度在11到20的单词数:%d\n",a[3]);
    printf("长度大于等于21的单词数:%d\n",a[4]);
    return 0;
}