我正在阅读 K&R 的书,其中一个练习是计算输入中的空格、制表符和新行。但每当我运行以下代码时,它只会正确计算最后一个新行上方所有内容的空格、制表符和新行。如果没有新行,则不算数。
hey how
返回
0 0 0
和
hey how
hey how
hey how
返回
2 0 2
如果我使用制表符而不是使用空格,它将是 0 2 2。空格和制表符似乎依赖于新行,我不知道为什么。那么我怎样才能让它工作,所以它最后不需要换行呢?这是我的代码。
#include <stdio.h>
/* counts blanks, tabs, and new lines */
main()
{
int c, blanks, tabs, nl;
blanks = 0;
tabs = 0;
nl = 0;
while((c = getchar()) != EOF)
{
if(c == ' ')
++blanks;
if(c == '\t')
++tabs;
if(c == '\n')
++nl;
}
printf("\n%d\t%d\t%d\n" , blanks , tabs , nl);
}