为什么我的第一个printf调试后可以输入字符,而不是打印出请输入任意一串字符??还有 while ((a = getchar()) != '\n')这句话表达的什么意思??

#include
int main()
{
char a;
printf("请输入任意一串字符;\n");
int b = 0, c = 0, d = 0, e = 0;
while ((a = getchar()) != '\n')
{
if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
{
b++;
}
else if (a >= '0' && a <= '9')
{
c++;
}
else if (a == ' ')
{
d++;
}
else
{
e++;
}
}
printf("字母是%d,数字是%d,空格是%d,其他是%d",b,c,d,e);
return 0;
}

while ((a = getchar()) != '\n')这句话就是只要输入回车就结束的意思