gpt4 book ai didi

c - 等待输入时打印时间

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

我正在尝试创建一个简单的程序来请求用户输入一个数字,但在上半部分我显示了一个每秒更新一次的时钟。

这是我知道的

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int a;

int main(void) {
int a =1;
while(a)
{
system("cls");
time_t rawtime;
struct tm* time_;

time(&rawtime);
time_ = localtime(&rawtime);

printf("%i:%i:%i %i %i %i\n", time_->tm_hour, time_->tm_min,
time_->tm_sec, time_->tm_mday, time_->tm_mon+1,
time_->tm_year+1900);
printf("Give the input :");
scanf("%d",&a);
}
return 0;
}

我从Program a simple clock in C中取出打印时间码

我的代码所做的是打印时间,然后等待输入,但在我提供输入之前它不会更新时钟。

是否有任何可能的方法来做我想做的事情或者我需要什么关键字来搜索解决方案?如果我的英语不好,我很抱歉,但如果我说的不够清楚,请运行代码:)。

最佳答案

只有两种方式可以在等待输入时显示一些东西:

  • 使用非阻塞 IO 并轮询用户输入,同时不断更新显示时间。使用 GUI 库或通过不可移植的系统调用很容易——遗憾的是不再是标准的可移植 C
  • 使用 2 个线程,一个用于更新显示,另一个用于用户输入。从 C11 开始它几乎是可移植的,除了对 C 线程的支持是可选的。这将导致一个更复杂的程序

TL/DR:即使它看起来很简单(并且在 80 年代的任何个人计算机上使用基本语言确实是可能的),非阻塞终端 IO 在 C 语言中远非简单,因为假设终端只是 IO 的一个特例。

关于c - 等待输入时打印时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733616/

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