我正在浏览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);
}

最佳答案

使用其他键盘快捷键。如果不想终止程序,则需要使用适当的密钥组合来模拟文件结尾:
Ctrl+C:终止程序。
Ctrl+Z,输入:Windows中的EOF信号。
Ctrl+D:Linux中的EOF信号。

关于c - K&R练习1-8计算空格,制表符和换行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14639630/

10-11 21:19