while((c=getchar())!='\n');
{
if(((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z'))) letters+=1;
else if(c==' ') spaces+=1;
else if(c>='0'&&c<='9') numbers+=1;
else others+=1;
}
while 後方多了一個分號 ;,導致迴圈本體為空語句,真正的處理區塊變成獨立的程式區塊,僅執行一次,且 c 保留迴圈結束時的值(換行符),故統計結果永遠是 0 0 0 1(換行符歸類為 other)。
while((c=getchar())!='\n')
{
if(((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z'))) letters+=1;
else if(c==' ') spaces+=1;
else if(c>='0'&&c<='9') numbers+=1;
else others+=1;
}
移除分號,將處理邏輯置於迴圈本體內,即可正確統計輸入字元。