2014-02-21 41 views
3

我正在编写K & R书籍,并且介绍了如何从文本流中统计字符的代码示例。我复制了他们的代码并尝试运行它,但是当命令行提示输入字符时,循环不会退出,因此也不会输出字符数。这里有没有错误,我不追赶?K&R C计数字符

#include <stdio.h> 

main() 
{ 
    long nc; 
    nc = 0; 
    while(getchar() != EOF) { 
      ++nc; 
    } 
    printf("%1d\n", nc); 
} 
+0

尝试用'\ n''替换'EOF'。 –

+0

你尝试过输入'EOF'字符吗? –

+2

我看到我的错误 - linux上的control + c不是EOF字符。谢谢!堆栈溢出让我立即接受答案 – Andrew

回答

10

每当你想停止它只是发送EOF信号到shell。

按Ctrl +d在Linux或Ctrl键在Windows + ž

顺便说(额外信息)按Ctrl +ç发送SIGINT过程在Linux和Windows上它类似的东西。

+1

在Mac上也是'Ctrl + D'我是对吗? –

+1

是的。你是对的。 – haccks

+1

是的,但最好写小'd','z' .. –

2

你有没有试着按按Ctrl +d(在Linux上)或按Ctrl +ž(在Windows上)?如果是,那么它肯定会出现循环。按下这些键后,它将返回EOF并且循环将终止。

1

尝试使用CNTL-Z(文件结束符)结束您的字符流。刚刚击中Enter结果为CR这只是另一个要计数的字符

+0

*刚刚击中输入结果的CR这只是另一个字符数*我不知道? –