如何在终端中输入EOF的值

use*_*308 16 c

我有一个C程序.

int main ()
{
    if (getchar()!=EOF)
        puts("Got a character");
    else
        puts("EOF");
}
Run Code Online (Sandbox Code Playgroud)

我应该在终端上键入什么来生成EOF?

unw*_*ind 25

在Windows中,Control+Z典型的键盘快捷键是指"文件结束",在Linux和Unix中通常是这样Control+D.


Lel*_*ran 13

  1. 由于某种原因,EOF被包装在宏中 - 您永远不需要知道该值.
  2. 从命令行,当您运行程序时,您可以使用Ctrl- D(Unix)或CTRL- Z(Microsoft)将EOF发送到程序.
  3. 要确定您的平台上EOF的价值,您可以随时打印它:

    printf ("%i\n", EOF);
    
    Run Code Online (Sandbox Code Playgroud)

  • `printf("%i", EOF)` 打印 `-1` 而不是 `Control+D` (3认同)
  • @KMC - 请允许我澄清一下.这样做:printf("%i \n","K"); 毕竟打印'75'而不是'K'.我还怀疑将EOF打印为带有"%c"的字符是否会导致打印"CTRL + D".根据终端,你甚至可能得到"?".请记住,当您*读*输入时,EOF是库返回的内容,并且无论如何都不能表示为可打印字符.当您在终端中输出*输出时,按CTRL + D(或其他)会导致终端输入; 它不会导致终端生成EOF的特定表示.希望这可以解决问题. (3认同)

Spa*_*key 6

您可以使用以下方法模拟 EOF:

  • 窗户:ctrl+Z
  • Unix:ctrl+D