想用c实现记录字符个数,但不知道为什么陷入死循环。请各位看看。

想用c实现记录字符个数,但不知道为什么陷入死循环。请各位看看。
#include
int main() {
    printf("请输入字符:");
    int a = 0, b = 0, d = 0,e=0;//a储存字母数,b储存数字数,d储存空格数,e储存其他字符数。
    char c = getchar();//录入字符
    while (c != '\n')//循环条件:若读取到回车则跳出。
    {
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
        {
            a++;
            printf("字母数为%d\n", a);
        }
        else if (c >= '0' && c <= '9')
        {
            b++;
            printf("数字为%d\n", b);
                }
        else if(c==' ')
        {
            d++;
        }
        else
        {
            e++;
            printf("其他字符数为%d\n", e);
        }
    }
    return 0;
}

img

char c = getchar(); 这句要写到while循环里面, 不然只读了一次就一直循序了,不会再读入条件永远为真