我目前正在编写一个小程序,它需要一段代码,该代码将等待 x 秒以查看用户是否输入任何内容,如果没有给出输入,则继续执行更多代码。这样的事情也可以包含在 for 循环中,这样一旦执行了进一步的代码,它就会等待有限的时间段再次输入。如果通过按键给出输入,则代码将继续执行进一步但不同的代码。
最初我尝试使用 while
来解决这个问题循环,<time.h>
的clock()
和scanf()
但无济于事。
我最近的尝试有所不同,但仍然没有产生预期的结果。
我最新的代码如下:
int c;
char check[10];
for(c=0;c<1000;++c){
//do something
int end=time(0)+(1);
while(time(0)<end){
fgets(check,10,stdin);
if(*check=='\n'){
break;
}
}
//do the other stuff
if(*check!='\n'){
break;
}
}
//even more stuff
我已经在脚本顶部声明了所有相关的头文件,但现在对如何继续感到困惑,而且我正在使用 Windows。任何帮助,将不胜感激。
非常感谢
最佳答案
您必须使用带有超时的 select,然后执行 IO。 起点可以是:
#include <sys/select.h>
#include <stdio.h>
int main(void) {
char buf[100];
fd_set rfds;
int r;
FD_ZERO(&rfds);
FD_SET(0, &rfds);
struct timeval timeout;
timeout.tv_sec = 3;
timeout.tv_usec = 0;
r = select(1, &rfds, NULL, NULL, &timeout);
if(r == 0)
printf("timeout!\n");
else {
fgets(buf, 100, stdin);
printf("==> %s\n", buf);
}
}
关于c - 让 C 在继续执行脚本之前等待用户输入一段有限的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061571/