如果你运行它,将打开一个数字时钟。它显示小时,分钟和秒,并突出显示当前时间。
我现在想要的是运行它。当添加第二个时间时,突出显示的数字应向右移动一个。明显。
我只是不知道该怎么做,请帮忙吗?
以下是我现在的代码:
#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;
}
答案 0 :(得分:2)
所以,有三个步骤,我认为你想要这样做:
步骤1涉及在整个代码周围添加while循环。
第2步涉及使用SetConsoleCursorPosition
功能。
步骤3涉及调用Sleep(250)
或类似的东西[你不想整整睡一觉,但是足够长的时间代码不会耗尽所有的CPU只检查每毫秒时间变了)。您可能还应该检查当前时间是否与上次相同,然后不打印。
我个人也会简化所有输出,将printf("%i", i);
(等)移出if / else - 毕竟,双方都是一样的。事实上,我将变量设置为颜色,然后在if之后调用SetConsoleTextAttribute
和printf
,只需在if中设置colour = WHITE
或colour = RED
/ else语句。