这代码可以运行。
无论while括号条件怎么写,既然出现死循环,只能说明 if(e=='\n') 判断不成立。
你把条件扩展成 if(e=='\n' || e=='\r')试试。
你把while里面改成1,因为你输入换行已经break了,不需要条件退出了,只需要不停输入就行了
#include
int main()
{
int a=0,b=0,c=0,d=0;
char e;
do{
e=getchar();
if((e>='a'&&e<='z')||(e>='A'&&e<='Z')) a++;
else if(e>='0'&&e<='9') b++;
else if(e==32) c++;
else d++;
}while(e!='\n');
printf("%d %d %d %d",a,b,c,d);
return 0;
}