如何创建一个 void 函数,该函数将在 C 中用作“按任意键继续”?
我想做的是:
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
我正在使用 Visual Studio 2012 进行编译。
如何创建一个 void 函数,该函数将在 C 中用作“按任意键继续”?
我想做的是:
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
我正在使用 Visual Studio 2012 进行编译。
使用 C 标准库函数getchar()
,因为getch()
它不是标准函数,由Borland TURBO C提供,仅用于 MS-DOS/Windows。
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getchar();
在这里,getchar()
希望您按回车键,因此printf
语句应该是press ENTER to continue
. 即使您按另一个键,您仍然需要按 ENTER:
printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");
getchar();
如果您使用的是 Windows,那么您可以使用getch()
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
//if you press any character it will continue ,
//but this is not a standard c function.
char ch;
printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");
//here also if you press any other key will wait till pressing ENTER
scanf("%c",&ch); //works as getchar() but here extra variable is required.
您没有说您使用的是什么系统,但由于您已经有了一些可能适用于 Windows 的答案,也可能不适用于 Windows,因此我将为 POSIX 系统回答。
在 POSIX 中,键盘输入来自称为终端接口的东西,默认情况下,它会缓冲输入行,直到按下 Return/Enter,以便正确处理退格。您可以使用 tcsetattr 调用来更改它:
#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 */
现在,当您从 stdin(使用getchar()
或任何其他方式)读取时,它将立即返回字符,而无需等待 Return/Enter。此外,退格将不再“起作用”——您将在输入中读取一个实际的退格字符,而不是删除最后一个字符。
此外,您需要确保在程序退出之前恢复规范模式,否则非规范处理可能会对您的 shell 或调用程序的人造成奇怪的影响。
使用getch()
:
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
Windows 替代方案应该是_getch()。
如果您使用的是 Windows,这应该是完整的示例:
#include <conio.h>
#include <ctype.h>
int main( void )
{
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
_getch();
}
PS 正如@Rörd 所指出的,如果您使用的是 POSIX 系统,则需要确保 curses 库设置正确。
尝试这个:-
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
getch()
用于从控制台获取字符但不回显到屏幕。
您可以尝试更多的系统独立方法:system("pause");