gpt4 book ai didi

c - 让 C 在继续执行脚本之前等待用户输入一段有限的时间

转载 作者:行者123 更新时间:2023-11-30 18:21:34 25 4
gpt4 key购买 nike

我目前正在编写一个小程序,它需要一段代码,该代码将等待 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com