C++ - 暂停程序,直到按下某个键
C++ - Pause program until a certain key is pressed
有没有一个函数可以让命令提示符程序像system("pause")
一样等待,只有在接受某个键后才继续运行?
如果您正在等待换行符,有一种简单易用的方法可以做到这一点。只需使用getline
.
如果您想在不先接收换行符的情况下接收其他字符,那么事情就不那么便携了。在Unix系统中,您需要将终端设置为"原始模式"。正如 George 的评论所提到的,ncurses 是一种简单的方法,此外它还提供了方便的功能,可以将东西绘制到终端中的特定位置、接收任意键等。
在Windows上,您需要使用其控制台界面。当然,这在Windows之外是无法使用的。
正如Neil Butterworth评论的那样,还有一个适用于Windows的curses版本,称为PDCurses。如果你需要编写适用于Unix和Windows的软件,这是一个不错的选择。
如果 getline 和 ncurses 对你不起作用,那么总是有 conio.h 和 getch()。 正如这个答案中所解释的,这有一些问题,为什么我在Linux上找不到
祝你好运。
如果你在Windows上,你可以使用kbhit(),它是Microsoft运行时库的一部分。如果你在Linux上,你可以实现kbhit。
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}
return 0;
}
编译步骤:
gcc -o kbhit kbhit.c
运行时
./kbhit
它会提示您按键,并在您按下某个键(不限于 Enter 或可打印键)时退出。
(通过互联网 - 您可以修改代码并使用特定的 ch 值,例如 作为 Enter 键)
相关文章:
- 用于在程序结束后暂停程序的有效循环
- C 使用CIN.Get()暂停此程序
- 如何在函数中暂停程序,直到用户在窗体上执行某些操作
- Mutex锁会在mingw中暂停程序,但在linux上不会
- C++ - 暂停程序,直到按下某个键
- 功能使程序暂停或睡眠C
- 当Windows XP(32位,SP3)播放声音时,随机应用程序暂停半秒钟
- 有没有办法在没有"entering key"的情况下等待并暂停程序?
- 为什么我的程序在选择排序函数后暂停
- Getline使程序暂停
- Visual C++ 是否需要在'main'函数结束之前暂停应用程序
- C++暂停外部程序
- C++定时器暂停程序的执行直到完成
- 不暂停代码的用户输入(c++控制台应用程序)
- 无法查看程序的结果,暂停不起作用.请告知
- C++命令行程序在Windows 8上意外暂停.如何预防
- c++程序中的暂停控制台
- 在编译完成后,暂停c++程序
- 如何使用' cin '在c++中暂停程序10秒
- Visual Studio 2008:如何暂停正在运行的程序以查看变量值