为啥第一个数组输入不进去

为什么第一个数组输入不进去
#include<stdio.h>
#include<string.h>
int main()
{
    int m,i=0,t,s[100],a[100]={0},sum=0;
    scanf("%d",&m);
    char b[100][100];
   while(i<m+1)
   {
       gets(b[i]);
       i++;
   }
        for(i=1;i<m+1;i++)
        {
              s[i]=strlen(b[i]);
              for(t=1;t<s[i]+1;t++)
              {
                   if(b[i][t]!=' ')
                        a[i]++;
              }
              printf("Line %d:%d\n",i,a[i]);
        }
        for(i=1;i<m+1;i++)
            sum+=a[i];
        printf("Total %d",sum);
}
每次b[0]都输入不进去,显示都是0;
------解决思路----------------------
scanf之后没有清除输入流。 
------解决思路----------------------
#include<stdio.h>
#include<string.h>
int main()
{
int m,i=0,t,s[100],a[100]={0},sum=0;
scanf("%d",&m);
getchar();////接收换行符号
char b[100][100];
while(i<m+1)
{
gets(b[i]);
i++;
}
for(i=1;i<m+1;i++)
{
s[i]=strlen(b[i]);
for(t=1;t<s[i]+1;t++)
{
if(b[i][t]!=' ')
a[i]++;
}
printf("Line %d:%d\n",i,a[i]);
}
for(i=1;i<m+1;i++)
sum+=a[i];
printf("Total %d",sum);
}为啥第一个数组输入不进去