C中的“按任意键继续”功能

时间:2013-09-14 11:54:21

标签: c

如何在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进行编译。

5 个答案:

答案 0 :(得分:39)

使用C标准库函数getchar(),getch()是boreland函数而非标准函数。

仅在Windows TURBO C中使用。

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");  
getchar();    

你应该按回车键。为此,printf语句应该按ENTER继续。

如果按a,则需要再按ENTER键 如果按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.      

答案 1 :(得分:14)

你没有说你正在使用什么系统,但是因为你已经有了一些可能适用于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 */

现在,当您从标准输入(使用getchar()或其他任何方式)读取时,它将立即返回字符,而无需等待返回/回车。此外,退格将不再“工作” - 而不是删除最后一个字符,您将在输入中读取实际的退格字符。

此外,您需要确保在程序退出之前恢复规范模式,或者非规范处理可能会对您的shell或任何调用您程序的人造成奇怪的影响。

答案 2 :(得分:3)

使用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();
}

P.S。正如@Rörd所指出的,如果你在POSIX系统上,你需要确保curses库设置正确。

答案 3 :(得分:1)

试试这个: -

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();

getch()用于从控制台获取角色,但不会回显到屏幕。

答案 4 :(得分:0)

您可以尝试更多的系统独立方法: system(“ pause”);