1

我正在阅读 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);
}
4

1 回答 1

3

使用不同的键盘快捷键。您不想杀死程序,而是想使用适当的组合键模拟文件结尾:

  • Ctrl+ C:杀死程序。
  • Ctrl+ Z, Enter: Windows 中的 EOF 信号。
  • Ctrl+ D: Linux 中的 EOF 信号。
于 2013-02-01T04:29:11.760 回答