代码之家  ›  专栏  ›  技术社区  ›  אבנר יעקב

Getchar()无限循环[闭合]

  •  3
  • אבנר יעקב  · 技术社区  · 7 年前

    我开始学习“C编程语言”,书中的一段代码对我不适用。此代码假设使用 getchar() .

    这是我的代码:

    #include <stdio.h>
    
    int main()
    {
      long nc;
    
      nc = 0;
      while (getchar() != EOF)
            ++nc;
      printf("%1d\n", nc);
    
      return 0;
    }
    

    我试着运行它并写一些字符,但当我按下 ENTER ,它只会开始一条新的线路。这就好像它永远不会退出循环。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ronan Boiteau    7 年前

    换行符不是 EOF . 你很困惑 EOF公司 EOL .

    当你的媒体 ENTER , getchar() 接收换行符: \n ,并且您的程序会像其他任何角色一样对其进行计数。

    尝试按 CTRL + D (Linux终端)或 CTRL键 + Z (Windows终端)发送 空输入 你的程序,从而结束它。

    您还可以将输入写入文件,并将此文件作为输入提供给您的程序,如下所示:

    ./your_program < your_file
    

    当您的输入来自文件时 EOF公司 到达文件末尾时自动发送到程序。这是因为没有更多的输出可以从文件中获得。