【问题标题】:How to enter the value of EOF in the terminal如何在终端输入EOF的值
【发布时间】:2021-12-09 18:59:25
【问题描述】:

我有一个 C 程序。

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

我应该在终端的标准输入中输入什么来生成 EOF?

【问题讨论】:

  • 试试putchar('%')printf("%%")
  • 我应该从键盘给什么来控制其他部分?
  • 你永远不会把你读到的字符分配给c
  • @user1593308, 你试过按 CTRL-D 吗? PL。检查这是否将代码带到 else 部分。

标签: c


【解决方案1】:

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

【讨论】:

  • 先生,我想在 C 中打印 EOF 的整数值,我该怎么做?
  • C中EOF的整数值是一个值
  • 无奈,这是谷歌第一次点击“文件结束键盘快捷键”。
  • @user1593308 就做printf("EOF=%d\n", EOF);,不用从getchar()获取值,直接用宏就行了。
【解决方案2】:
  1. EOF 包含在宏中是有原因的 - 您永远不需要知道值。
  2. 从命令行,当您运行程序时,您可以使用 Ctrl-D (Unix) 或 CTRL 向程序发送 EOF kbd>-Z(微软)。
  3. 要确定 EOF 在您的平台上的值是多少,您可以随时打印它:

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

【讨论】:

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

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

  • Windows:ctrl+Z
  • Unix:ctrl+D

【讨论】:

    【解决方案4】:

    到目前为止,其他任何答案都没有提到它,但是您可能需要按右键组合(^D 或 ^Z)2 或 3 次才能真正发出 EOF 信号; see here解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2021-01-10
      相关资源
      最近更新 更多