【问题标题】:C on CodeBlocks: how can I send user input without pressing "enter"? [duplicate]C on CodeBlocks:如何在不按“回车”的情况下发送用户输入? [复制]
【发布时间】:2016-08-12 20:17:34
【问题描述】:

我正在使用 CodeBlock 在 Windows 上尝试来自“C 编程语言”的示例,但我不知道如何在不按 Enter 的情况下获取用户输入。该程序使用 getchar() 计算输入中的行数,因此当我运行它时,“输入”仅用作 \n 并且不允许我发送输入。有其他方法吗?

编辑 问题出在编译器上。看了一段时间才知道的

【问题讨论】:

  • 查看getch 函数,它只需按一下键即可。您当然可以根据需要使用循环多次执行getch。我有一种感觉,可能有一种更高级别的方法可以做到这一点。
  • This program counts the number of lines in the input 哪个程序?

标签: c codeblocks enter


【解决方案1】:

这不是 C 编程语言的问题。它更多地与您用来与 C 程序交互的终端有关。

默认情况下,大多数终端会缓冲您键入的输入,并且仅在您按回车键完成该行时将其发送到程序。这就是允许您在将输入错误发送到 C 程序之前使用退格键更正输入错误的原因。

如果您没有创建交互式程序,那么如果您将程序输出重定向到从文件而不是从终端读取,那么 getchar() 将不必等待。毕竟输入文件一开始就在那里。

./myprogram.exe < myinputfile.txt

如果您想创建一个交互式程序,那么您可以做的最简单的事情就是接受一次输入一行。这是用户在终端输入时所期望的。

如果您希望您的应用程序立即响应按键,那么您将需要使用标准 C 库之外的东西。例如,在 Linux 中,您可以使用 ncurses 创建可以立即对按键做出反应的终端应用程序,包括箭头键等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多