K& R练习1-8计算空白,制表符和新行

时间:2013-02-01 04:16:23

标签: c

我正在阅读K& R的书,其中一个练习是计算输入中的空白,制表符和新行。但是每当我运行以下代码时,它只会正确计算最后一个新行之上的所有内容的空格,制表符和新行。如果没有新行,它就不计算任何数量。

hey how

返回

0 0 0

hey how
hey how
hey how

返回

2 0 2

如果我使用tabbed而不是使用空格,那么它将是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);
}

1 个答案:

答案 0 :(得分:3)

使用其他键盘快捷键。你不想杀死程序,你想用适当的组合键模拟文件结尾:

  • Ctrl + C :杀死程序。
  • Ctrl + Z 输入:在Windows中发出EOF信号。
  • Ctrl + D :在Linux中发出EOF信号。