我正在使用CodeBlock在Windows上使用“C编程语言”尝试一个示例,我不知道如何在不必按Enter的情况下获取用户输入。这个程序使用getchar()计算输入中的行数,因此当我运行它时,“enter”仅作为\ n使用,并且不允许我发送输入。有替代方法吗?
EDIT 问题出在编译器上。在研究了一段时间后想出来
答案 0 :(得分:0)
这不是C编程语言的问题。它更多地与您用于与C程序接口的终端有关。
默认情况下,大多数终端缓冲您键入的输入,只有在按Enter键完成该行时才将其发送到程序。这是允许您在将输入错误发送到C程序之前使用退格键来纠正错误的原因。
如果您没有创建交互式程序,那么如果您将程序输出重定向为从文件而不是从终端读取,则getchar()将不必等待。毕竟,输入文件从一开始就在那里。
./myprogram.exe < myinputfile.txt
如果您想创建一个交互式程序,那么您可以做的最简单的事情就是接受输入一次完整一行。这是用户在终端上输入的内容。
如果您希望应用程序立即响应按键,那么您将需要使用标准C库之外的内容。例如,在Linux中,您可以使用ncurses创建可立即响应按键的终端应用程序,包括箭头键等。