在OSX中从控制台读取输入

5

我正在使用scanf()函数在控制台应用程序中读取用户在终端上的输入。scanf会等待用户按下回车键才会读取。是否有一种方法可以在每次按键时读取用户输入?

3个回答

5

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

请注意,虽然getchar只读取一个字符,但它仍然通常进行缓冲读取,因此您需要在按下"回车"/"enter"之前才能返回。


3

getch()函数从标准输入流中获取字符流,以其键入的方式返回。


那将是非常不寻常的 - 这不是默认行为。 - Jonathan Leffler

1
char c = getchar();

它应该能解决问题。


2
为什么?他想要一个char,而int占用更多的内存。 - Mark Segal
3
使用int类型可以检查超出范围的值,同时,当声明为局部变量时,它很可能会占用相同的位置。 - MByD
2
@Quantic:getchar() 返回一个整数,因此它可以返回任何普通字符以及像EOF这样的非字符值。 - Rudy Velthuis
我不太理解“out-of-band”值的含义,请解释一下。 - Mark Segal
有些值不适合使用 char(如 @Rudy Velthuis 所说),当你使用 char 时无法检测到它们。 - MByD
EOF是与任何有效的char不同的值 - 因此您无法可靠地将getchar()的结果存储在char中,因为它可以返回任何有效的char和EOF。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接