gpt4 book ai didi

c - 无需等待即可获取用户输入 - C 语言..!

转载 作者:行者123 更新时间:2023-11-30 19:42:12 24 4
gpt4 key购买 nike

我目前正在编写一个简单的计时器,它从 00 秒运行到 55 秒,然后再次从 00 开始并持续计数,直到用户停止为止。为此,我为用户提供了两个选项:1. 启动和 2. 重置。选择数字 1 运行程序,选择数字 2,正如我所认为的,会将计时器设置为 00 并保持该位置。

现在我面临的问题是我想在不停止计时器的情况下获得用户的输入(即使用户能够在程序运行时随时输入2,以便他可以停止正在进行的计数)。我尝试使用 getch() 和 scanf() 等函数,但它们停止了计时器,这完全破坏了程序。

任何帮助都非常感谢大家..!!

最佳答案

您可以使用 ncurses 来完成此操作。在 Windows 上,可以使用 kbhit()getch()

完成类似的操作
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
#include <ncurses.h>

int main()
{
char ch = 0;
int row = 0;
int line = 0;
int col = 0;
int counting = 1;
char text[80] = {""};
long int elapsed = 0;
struct timeval start;
struct timeval stop;

initscr ( );
noecho ( );
timeout(100);
getmaxyx ( stdscr, row, col);
line = row / 2;
snprintf ( text, sizeof ( text), "press 1 to exit or 2 to reset");
mvprintw ( line - 1, ( col - strlen ( text)) / 2,"%s", text);
gettimeofday ( &start, NULL);
while ( 1) {
if ( counting) {
gettimeofday ( &stop, NULL);

elapsed = (stop.tv_sec - start.tv_sec);

snprintf ( text, sizeof ( text), " %ld ", elapsed);
mvprintw ( line, ( col - strlen ( text)) / 2,"%s", text);
if ( elapsed > 54) {
gettimeofday ( &start, NULL);
}
}
else {
snprintf ( text, sizeof ( text), "paused press 1 or 2");
mvprintw ( line, ( col - strlen ( text)) / 2,"%s", text);
}
//refresh ( );
if ( ( ch = getch ( )) == '1' || ch == '2') {
if ( ch == '2') {
counting = !counting;
if ( counting) {
gettimeofday ( &start, NULL);
}
}
if ( ch == '1') {
break;
}
}
}
endwin ( );
return 0;
}

关于c - 无需等待即可获取用户输入 - C 语言..!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607814/

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