如何使C语言中的数字时钟工作
如果运行此操作,将打开一个数字时钟。它显示小时、分钟和秒,并突出显示当前时间 我现在想要的是让它运行。当添加第二个时间时,突出显示的数字应向右移动一个。很明显 我只是不知道怎么做,有什么可以帮忙的吗 以下是我现在掌握的代码:如何使C语言中的数字时钟工作,c,C,如果运行此操作,将打开一个数字时钟。它显示小时、分钟和秒,并突出显示当前时间 我现在想要的是让它运行。当添加第二个时间时,突出显示的数字应向右移动一个。很明显 我只是不知道怎么做,有什么可以帮忙的吗 以下是我现在掌握的代码: #include <stdio.h> #include <time.h> #include <conio.h> #include <unistd.h> #include <stdlib.h> #include &l
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <unistd.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
#define WHITE 15
int main()
{
int uren, minuten, seconden;
time_t ltime;
struct tm *Tm;
ltime = time(NULL);
Tm = localtime(<ime);
uren = Tm->tm_hour;
minuten = Tm->tm_min;
seconden = Tm->tm_sec;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("Uren:\n");
int i;
for (i = 0; i < 24; i++) {
if(uren == i){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("%i ", i);
}else {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("%i ", i);
}
}
printf("\n\nMinuten:\n");
int j;
for(j = 0; j < 60; j++) {
if(minuten == j){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("%i ", j);
}else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("%i ", j);
}
}
printf("\n\nSeconden:\n");
int k;
for(k = 0; k < 60; k++) {
if(seconden == k){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("%i ", k);
}else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("%i ", k);
}
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义白色15
int main()
{
国际,分钟,秒;
时间;
struct tm*tm;
ltime=时间(空);
Tm=本地时间(<ime);
uren=Tm->Tm\u小时;
分钟=Tm->Tm\U分钟;
二次=Tm->Tm_秒;
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),15);
printf(“Uren:\n”);
int i;
对于(i=0;i<24;i++){
如果(uren==i){
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),前台红色);
printf(“%i”,i);
}否则{
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),15);
printf(“%i”,i);
}
}
printf(“\n\n分钟:\n”);
int j;
对于(j=0;j<60;j++){
如果(分钟==j){
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),前台红色);
printf(“%i”,j);
}否则{
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),15);
printf(“%i”,j);
}
}
printf(“\n\n压缩:\n”);
int k;
对于(k=0;k<60;k++){
if(seconden==k){
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),前台红色);
printf(“%i”,k);
}否则{
SetConsoleTextAttribute(GetStdHandle(标准输出句柄),15);
printf(“%i”,k);
}
}
返回0;
}
因此,我认为您需要执行三个步骤:
Sleep(250)
或类似的东西[你不想睡一整秒钟,但要有足够长的时间,这样代码就不会用光所有的CPU,只是为了每毫秒检查一次时间是否发生了变化]。你可能还应该检查当前时间是否与上次相同,然后不要打印它
我个人也会通过移动
printf(“%I”,I);
(等)来简化所有输出在if/else之外——毕竟,两边都是一样的。事实上,我会将一个变量设置为颜色,然后在if之后调用SetConsoleTextAttribute
和printf
,只需在if/else语句中设置color=WHITE
或color=RED
。你不能放一个大的while(true)'围绕它,清除屏幕,然后再次打印时间?通过休眠线程1秒结束循环(谷歌it)你使用#定义白色15
,然后在代码中仍然使用15
。@蟾蜍他可以这么做,但在我看来,一定有更好的方法,就像用猎枪杀死苍蝇一样,但也有更好的方法。你在问如何更新终端中的文本?@mah对于技能水平,这似乎是最简单的方法了解解决方案。看起来Mats同意我的观点;^)我现在就开始讲,因为我的C语言还不太好,这需要一些时间。谢谢你的努力!事实上这不是最好的解决方案,你知道有什么方法可以在短时间内做到这一点吗?