是否有一个函数使命令提示程序等待system("pause")
,并且仅在接受某个键后才继续运行?
答案 0 :(得分:2)
如果您正在等待换行符,那么这是一种简单易用的方法。只需使用getline
。
如果您希望先接收其他字符而不接收换行符,那么便于携带。在Unix系统中,您需要将终端设置为"原始模式"。正如乔治的评论所提到的,ncurses是一种简单的方法,它提供了便利的功能,可以将东西绘制到终端中的特定位置,接收任意键等。
在Windows上,您需要使用其console interface。当然,这不能在Windows之外使用。
正如Neil Butterworth评论的那样,还有适用于Windows的curses版本,称为PDCurses。如果你需要编写适用于Unix和Windows的软件,那么这是一个很好的选择。
答案 1 :(得分:0)
如果getline和ncurses不适合你,总会有conio.h和getch()。如本答案Why can't I find <conio.h> on Linux?
中所述,这有一些问题 祝你好运。答案 2 :(得分:0)
在Windows控制台界面上, getche()函数会在进一步执行之前等待击键。
答案 3 :(得分:0)
如果您使用的是Windows,则可以使用kbhit(),它是Microsoft运行时库的一部分。如果您使用的是Linux,则可以实现kbhit
editor.apply()
编译步骤:
#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
它会提示您按键,并在按键时退出(不限于Enter键或可打印键)。
(通过互联网 - 您可以修改代码并使用特定的ch值,例如\ n为Enter键)