我如何创建一个void函数,它在C语言中可以作为“Press Any Key to Continue”使用? 我想做的是:
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
//The Void Function Here
//Then I will call the function that will start the game
#include <termios.h>
struct termios info;
tcgetattr(0, &info); /* get current terminal attirbutes; 0 is the file descriptor for stdin */
info.c_lflag &= ~ICANON; /* disable canonical mode */
info.c_cc[VMIN] = 1; /* wait until at least one keystroke available */
info.c_cc[VTIME] = 0; /* no timeout */
tcsetattr(0, TCSANOW, &info); /* set immediately */
7条答案
按热度按时间xxhby3vn1#
使用C标准库函数
getchar()
代替,因为getch()
不是标准函数,仅由Borland TURBO C为MS-DOS/Windows提供。这里,
getchar()
希望您按回车键,因此printf
语句应该是press ENTER to continue
。即使您按了另一个键,您仍然需要按ENTER键:如果您使用的是Windows,则可以使用
getch()
第一次
vyu0f0g12#
你没有说你使用的是什么系统,但是因为你已经有了一些答案,可能适用于Windows,也可能不适用于Windows,我将回答POSIX系统。
在POSIX中,键盘输入通过一个终端接口,默认情况下,它会缓冲输入行,直到按下Return/Enter键,以便正确处理退格。你可以用tcsetattr调用来改变这一点:
现在,当你从stdin中读取数据时(使用
getchar()
,或者其他方法),它会立即返回字符,而不需要等待Return/Enter。另外,退格键也不再起作用--你将在输入中读取一个实际的退格键字符,而不是删除最后一个字符。此外,您还需要确保在程序退出之前恢复规范模式,否则非规范处理可能会对shell或调用程序的任何人造成奇怪的影响。
1szpjjfi3#
使用
getch()
:Windows替代项应为_getch()。
如果您使用的是Windows,完整示例如下:
P.S.正如@Rörd所指出的,如果你使用的是POSIX系统,你需要确保curses库的设置正确。
iswrvxsc4#
试试这个:-
getch()
用于从控制台获取字符,但不回显到屏幕。7kqas0il5#
我认为如果您不使用Linux,可以使用
unistd.h
输出(英语):
7kqas0il6#
您可以尝试更多与系统无关的方法:
ftf50wuq7#
我认为这适用于所有操作系统