简单的C程序,printf不打印

时间:2013-06-14 21:17:19

标签: c while-loop printf

我是新来的,至少提问。一直都能在这里找到好的答案。试图回到编程和重新学习C但遇到了奇怪的问题。

#include <stdio.h>

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

当我运行它时,在输入任意数量的字符并按下回车键后,它不会打印nc的值。 点击进入后,我可以再次开始打字,同样的故事。真的看不出有什么不对。唯一可行的方法是将++ nc和printf放在括号内。但是当我按下回车键时,它会给出1到nc的值,这不是我想要的。我只想要nc。 毋庸置疑,这种类型也不是问题。 提前致谢

4 个答案:

答案 0 :(得分:7)

在终端输入Ctrl-D以发送EOF。你可能想要

while (getchar() != '\n')

相反,如果你想让它与enter一起使用。

答案 1 :(得分:3)

您需要按Ctrl-D才能获得EOF。

答案 2 :(得分:1)

尝试

  

while(getchar()!='\ n')       NC ++;

编辑:假设输入来自控制台,'\ n'就足够了。

答案 3 :(得分:0)

如果你只想在循环中打印nc,你应该在循环中包含print语句,如下所示:

#include <stdio.h>

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

在按下[enter]后为每个角色打印一次nc,可能不是你想要的。

如果你想每行打印一次nc,请使用scanf并执行:

#include <stdio.h>
#include <string.h>

main()
{
    long nc;
    nc = 0;
    char buf[128];
    while (scanf("%s",&buf) > 0) {
      int len = strlen(buf);
      nc += len;
      printf("%ld \n", nc);
    } 
}