提问人:user1593308 提问时间:8/15/2012 最后编辑:Antti Haapala -- Слава Україніuser1593308 更新时间:12/5/2018 访问量:71529
如何在终端中输入EOF的值
How to enter the value of EOF in the terminal
问:
我有一个 C 程序。
int main ()
{
if (getchar()!=EOF)
puts("Got a character");
else
puts("EOF");
}
我应该在终端上的 stdin 中输入什么才能生成 EOF?
答:
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
- EOF 被包装在宏中是有原因的 - 你永远不需要知道这个值。
- 在命令行中,当您运行程序时,可以使用 - (Unix) 或 - (Microsoft) 将 EOF 发送到程序。CtrlDCTRLZ
要确定EOF在您的平台上的价值,您可以随时打印它:
printf ("%i\n", EOF);
评论
4赞
KMC
4/5/2013
printf("%i", EOF)
打印代替-1
Control+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 信号;有关说明,请参阅此处。
评论
putchar('%')
printf("%%")
c