我想将 kbhit() 用于“按任意键继续”功能。但是,在我循环使用 kbhit() 之后,按键存储在标准输入中。因此,在下一个 scanf() 中,之前按下的键出现在输入中。
int x,b=0;
printf("Press any key to continue...")
while (b==0) {
b=kbhit();
}
system("cls");
printf("Enter number:");
scanf("%d",&x);
因此,如果用户按下一个键,假设是字母 K,则 k 出现在“输入数字:”之后。
我曾尝试寻找解决方案,但未能使其中任何一个起作用。我试图将退格字符放入输入流中。我也尝试使用 getch(),但是,用户必须按“Enter”才能继续,所以它违背了最初的目的。我还尝试通过关闭和打开来清除标准输入流,但我无法正常打开它。
编辑:正如 janisz 在评论中所说,我所需要的就是使用系统(“暂停”)。虽然我无法编辑正如 janisz 在评论中所说的那样,我所需要的只是使用系统(“暂停”)。虽然我无法编辑“按任意键继续”,但它足以满足我的目的。如果可能,我将继续尝试此处提供的其他解决方案以获得更好的结果,但目前我需要 system("pause")。
EDIT2:好的,你们中的一些人建议使用 getch()。根据我在网上看到的,getch() 函数从流中获取输入,而屏幕上没有实际显示字符,这正是我想要的。但是,当我尝试使用 getch() 时,按任意键后程序不会继续,它会等待我按 enter 键。有问题吗?我在 Windows 7 上使用 C-Free 4 Standard。