从 OSX 中的控制台读取输入

Posted

技术标签:

【中文标题】从 OSX 中的控制台读取输入【英文标题】:Read input from console in OSX 【发布时间】:2011-10-11 10:04:15 【问题描述】:

我正在使用scanf() 在控制台应用程序的终端上读取用户输入。 scanf 等到用户按回车键读取。有没有办法在每次击键时读取用户输入?

【问题讨论】:

【参考方案1】:

通常的方法是使用来自ncurses(Mac 端口)的getch 函数。

请注意,虽然getchar 读取单个字符,但它通常仍会进行缓冲读取,因此您需要在返回之前按“return”/“enter”。

【讨论】:

【参考方案2】:

getch() 在输入时从标准输入返回字符流。

【讨论】:

这将是非常不寻常的 - 这不是默认行为。【参考方案3】:
char c = getchar();

它应该可以解决问题。

【讨论】:

为什么?他想要char - 而int 需要更多内存 使用 int 可以检查带外值,此外,当声明为局部变量时,它可能会占据相同的位置。 @Quantic: getchar() 返回一个 int,因此它可以返回任何普通 char 以及像 EOF 这样的非 char 值。 我不太明白“带外”值是什么意思 - 请解释一下 有些值不适合char(正如@Rudy Velthuis 所说),使用字符时无法检测到它们。

以上是关于从 OSX 中的控制台读取输入的主要内容,如果未能解决你的问题,请参考以下文章

从控制台读取输入,无需无条件等待(非等待 scanf)

如何从 C 中的控制台读取一行?

java中怎样读取控制台输入的整形数据

从视图中的表单读取文件输入时总是出错

javascript 从控制台读取标准输入

ssh 坚持从控制台而不是标准输入读取密码