不能用scanf函数来接收字符串,因为有空格。 所以用gets或者fgets函数都行

#include<stdio.h>
#include<string.h>

int main(int argc, char const *argv[])
{
    int in_len = 0;
    int yw_sum = 0;
    int kg_sum = 0;
    int num_sum = 0;
    int qt_sum = 0;
    char in_str[1000 + 1];
    // scanf("%s", in_str);
    while ( gets(in_str) != NULL)
    {
        yw_sum = 0;
        kg_sum = 0;
        num_sum = 0;
        qt_sum = 0;

        in_len = strlen(in_str);
        for (int i = 0; i < in_len; i++)
        {
            if ( in_str[i]>='a' && in_str[i]<='z' || in_str[i]>='A' && in_str[i]<='Z' )
            {
                yw_sum++;
            }
            else if ( in_str[i]==' ' )
            {
                kg_sum++;
            }
            else if ( in_str[i]>='0' && in_str[i]<='9' )
            {
                num_sum++;
            }
            else
            {
                qt_sum++;
            }
            
        }
        printf("%d\n", yw_sum);
        printf("%d\n", kg_sum);
        printf("%d\n", num_sum);
        printf("%d\n", qt_sum);
    }

    return 0;
}