在C中没有'return'的情况下从键盘获取输入

时间:2010-03-30 20:23:40

标签: c macos

如何在不按C / Mac Os中的“返回”的情况下从键盘获取输入

3 个答案:

答案 0 :(得分:5)

在具有终端的类Unix系统上(我认为MacOS X符合条件),那么您需要将终端设置为所谓的“cbreak”模式。关键是终端保持数据直到按下“return”,这样你的C代码就什么也做不了,除非它指示终端不做这样的缓冲。这通常称为“cbreak模式”,涉及tcsetattr()函数。

发现一点谷歌搜索this code似乎没问题。终端处于cbreak模式后,您就可以读取标准getchar()fgetc()来电时的数据。

答案 1 :(得分:5)

答案 2 :(得分:2)

如果您必须自己处理细节,请使用curses变体。如果它可用,则更喜欢“ncurses”而不是“curses”。请注意,某些键是“Meta”键,它们实际上只是修改基本键代码。读取键输入有几种“模式”,范围从“熟”到“部分熟”到“原始”。每种模式都有自己的特点,请仔细阅读文档。

有时最好使用各种游戏编程库中的现有键处理代码,我听说使用SDL的键扫描循环有一些好的结果。那是一段时间了,所以也许存在更新(和更好)的工具包。