我正在浏览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/