我想编写一个 C 程序来标记字符串并逐字打印出来,慢慢地,我希望它同时监听用户按下 Enter,此时他们将能够输入数据。这可能吗?
最佳答案
更新:请参阅下面@modifiable-lvalue 的评论以获取更多有用的信息,例如,使用 getchar()
而不是 getch(),如果你走那条路的话。
绝对有可能。请注意 gets()
可能不会完全有助于此目的,因为 gets()
将 enter 解释为不是 enter 本身,而是“现在,我是用户, 已经输入了尽可能多的字符串”。因此,通过 gets()
仅按回车键收集的输入将显示为空字符串(这对您来说可能可行)。
请参阅:http://www.cplusplus.com/reference/cstdio/gets/ .
但是还有其他不使用 gets() 的原因——它不允许您指定读取的最大值,因此很容易溢出您正在使用的任何缓冲区。等待发生的安全和错误噩梦。所以您需要 fgets()
,它允许您指定要读入的最大大小。fgets()
将在按下回车键时在字符串中放置一个换行符。 (顺便说一句,@jazzbassrob 在 fgets() 上的支持)。
您还可以考虑像 getch()
这样的东西——它确实处理单个按键(但它处理具有非直接扫描代码的键有点复杂)。您可能会发现此示例很有帮助:http://www.daniweb.com/software-development/cpp/code/216732/reading-scan-codes-from-the-keyboard .但由于扫描码问题,getch()
以平台详情为准。
因此,如果您想要一种更便携的方法,您可能需要使用重量更重但相当便携的东西,例如 ncurses .
我怀疑你可以用 fgets()
做你想做的事,记住 enter 会给你一个只有换行符的字符串,或者 getch()
.
我只是想让您了解一些可能出现的实现/平台问题。
C 绝对可以做到这一点,但它比第一次尝试时可能猜测的要复杂一些。这是因为从历史上看,终端输入非常依赖于平台。
关于c - 是否可以在 C 中捕获 Enter 按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14487674/