如何在终端中输入EOF的值

How to enter the value of EOF in the terminal

提问人:user1593308 提问时间:8/15/2012 最后编辑:Antti Haapala -- Слава Україніuser1593308 更新时间:12/5/2018 访问量:71529

问:

我有一个 C 程序。

int main ()
{
    if (getchar()!=EOF)
        puts("Got a character");
    else
        puts("EOF");
}

我应该在终端上的 stdin 中输入什么才能生成 EOF?

c

评论

1赞 pmg 8/15/2012
try 或putchar('%')printf("%%")
0赞 user1593308 8/15/2012
相反,我应该从键盘上提供什么来控制其他部分?
1赞 Some programmer dude 8/15/2012
你永远不会将你读到的字符分配给 .c
4赞 Tanmoy Bandyopadhyay 8/15/2012
@user1593308,你试过按CTRL-D吗?请检查这是否将代码带到其他部分。

答:

7赞 SpacedMonkey 8/15/2012 #1

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

  • 窗户:ctrl+Z
  • Unix的:ctrl+D
83赞 unwind 8/15/2012 #2

在 Windows 中,是表示“文件结束”的典型键盘快捷键,在 Linux 和 Unix 中,它通常是 .Control+ZControl+D

评论

1赞 user1593308 8/15/2012
先生,我想在 C 中打印 EOF 的整数值,我该怎么做?
0赞 10/16/2013
C 中 EOF 的整数值为 value<0,因此将变量设置为 getchar(),然后在读取 EOF 时将其打印出来
0赞 Toby Wilson 3/31/2020
无益的是,这是谷歌对“文件末尾键盘快捷键”的第一次点击。
1赞 unwind 3/31/2020
@user1593308 做就行了,不需要从中获取值,直接使用宏即可。printf("EOF=%d\n", EOF);getchar()
17赞 Lelanthran 8/15/2012 #3
  1. EOF 被包装在宏中是有原因的 - 你永远不需要知道这个值。
  2. 在命令行中,当您运行程序时,可以使用 - (Unix) 或 - (Microsoft) 将 EOF 发送到程序。CtrlDCTRLZ
  3. 要确定EOF在您的平台上的价值,您可以随时打印它:

    printf ("%i\n", EOF);
    

评论

4赞 KMC 4/5/2013
printf("%i", EOF)打印代替-1Control+D
5赞 Lelanthran 4/6/2013
@KMC - 请允许我澄清一下。执行此操作:printf (“%i\n”, 'K');毕竟会打印“75”而不是“K”。我还怀疑将 EOF 打印为带有“%c”的字符是否会导致打印“CTRL+D”。根据终端的不同,您甚至可能会得到“?”。请记住,EOF 是库在读取输入时返回的内容,无论如何都不能表示为可打印字符。当您在终端中写入输出时,按 CTRL+D(或其他任何方式)会导致终端结束输入;它不会导致终端生成 EOF 的特定表示形式。希望这能把事情弄清楚。
0赞 Alex 10/5/2023
乌班图 18.不起作用。给出错误“bash:语法错误接近意外的标记'”%i\n“,'”
4赞 M.M 10/19/2018 #4

到目前为止,任何其他答案中都没有提到它,但您可能需要按右键组合(^D 或 ^Z)2 或 3 次才能实际发出 EOF 信号;有关说明,请参阅此处