gpt4 book ai didi

c - 如何编写独立运行两个任务的程序?

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:29 25 4
gpt4 key购买 nike

我想编写一个程序,让用户在特定时间段内猜一个数字。如果他未能在规定时间内猜对数字,则超时,游戏将从第一个开始。

喜欢

main() {
int i, timer;
while(1) {
/* How to run the timer independently and it will signal that time out !!!*/
for(i = 0; i <= 10; i++) {
printf("\n Guess the value of i : ");
scanf("%d", &j);
if(i != j) {
printf("Bad Luck wrong Guess ");
}
else
printf("Great, You guessed correctly \n");
}
}
}

在这个程序中,我只是不知道在哪里运行计时器以及如何运行?请帮助我。

最佳答案

您的根本问题似乎是 scanf() 在用户按下 Enter 之前不会返回。因此,即使计时器已过期,在用户按下 Enter 之前也不会发生任何事情。

在标准 ANSI C 中,对此没有真正的解决方案。您将需要使用特定于平台的功能。

在 Windows 上的一种可能性是使用 conio.h 头文件和类似 _kbhit() 的函数。 .这允许您在尝试读取之前测试是否按下了某个键,因此如果没有按下任何键,您可以继续检查计时器。如果按下了一个键,您可以使用 getc() 读取它,而不必担心 getc() 会坐在那里等待用户按下一个键。继续将读取的键添加到字符数组中,直到读取到 '\n' 字符。然后使用 sscanf() 将字符串转换为数字。

对于计时器本身,您可以只检查 time() 函数的返回值。

这不是解决问题的最有效方法,因为当您编写代码时,您会发现程序在循环测试 _kbhit() 一次又一次。

在 Windows 上更有效的解决方案是使用重叠 I/O,但这可能超出了您当前尝试的范围。

关于c - 如何编写独立运行两个任务的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118015/

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