关于gets()跟scnaf的一些区别

关于gets()和scnaf的一些区别
字符串统计

Problem Description
对于给定的一个字符串,统计其中数字字符出现的次数。
 

Input
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
 

Output
对于每个测试实例,输出该串中数值的个数,每个输出占一行。
 

Sample Input
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
 

Sample Output
6
9
 
#include <stdio.h>
#include <string.h>
int main()
{
    int n,l,w,i;
    char a[100];
    while(~scanf("%d",&n))
    {
       while (n--)
       {
        w=0;
        scanf("%s",a);                                //用scnaf可以AC掉
        l=strlen(a);
        for(i=0;i<l;i++)
        {
            if(a[i]<='9'&&a[i]>='0')
                w++;
        }
        printf("%d\n",w);
       }
    }
    return 0;
}


就是向a[100]数组里面输入的时候,如果我用的是scanf  ,就可以正常的输入,程序AC啥的都没问题
但为什么我要是用gets(a)的话,就要在向n输入数值的后面加一个getchar()??


就是为什么scanf不会出现回车字符的状况而gets()却会出现?
------解决思路----------------------
gets接收回车 scanf不接受