169 похожих чатов

Всем привет. А как сделать чтобы при запуске программы часы

шли в текущем времени? Зациклить time now с дискретностью в одну секунду? Или есть другие способы, если есть?

32 ответов

60 просмотров

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> int main() { time_t t = time(NULL); struct tm tm = *localtime(&t); printf("now: %d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); int hour = tm.tm_hour; int minute = tm.tm_min; int second = tm.tm_sec; while (1) { // Print the time in HH : MM : SS format printf("%02d : %02d : %02d \r", hour, minute, second); // Clear the output buffer in gcc fflush(stdout); // Increment second second++; // Update hour, minute and second if (second == 60) { minute += 1; second = 0; } if (minute == 60) { hour += 1; minute = 0; } if (hour == 24) { hour = 0; minute = 0; second = 0; } // Wait for 1 second sleep(1); } return 0; } как то такможно

Эмм... а в чём проблема юзать posix time?

²
#include <stdio.h> #include <stdlib.h> #include <t...

Чел просто хозяин этого языка

²
#include <stdio.h> #include <stdlib.h> #include <t...

А если нужно два разных времени отслеживать например два часовых пояса или отслеживать разницу времени двух таймеров в одной программе, то два и более таких цикла могут работать одновременно? У меня только один вывелся либо как мне показалось при определенной последовательности записи кода они взаимно перекрывают друг друга как строка на строку что-ли... Как будто обрывками выводится

Василий Александрович
А если нужно два разных времени отслеживать напри...

Попробуйте посмотрите что делает функция gettimeofday() из sys/time.h кажется. Она возвращает текущее время в формате epoch, а его потом можно в любой часовой пояс преобразовать

Василий Александрович
А если нужно два разных времени отслеживать напри...

Бытует мнение, что разница в 2 часовых поясах это константа

Денис Rabbit
Бытует мнение, что разница в 2 часовых поясах это ...

мне надо чтобы шло и выводилось даое часов в одной программе при запуске

Василий Александрович
Вот код

У меня все работает https://asciinema.org/a/gC7aKQ6uD0zkCvcxEFhRsm9OP Что конкретно у вас неработает?

S.E.
У меня все работает https://asciinema.org/a/gC7aKQ...

Двое разных часов не работает одновременно

Василий Александрович
Двое разных часов не работает одновременно

У меня на видео двое часов работают. Как вы это реализовали? Где ВАШ код?

Василий Александрович
Двое разных часов не работает одновременно

И еще вопрос: почему вы считаете, что sleep+ инкремент секунды лучще, чем sleep + time+localtime?

S.E.
У меня на видео двое часов работают. Как вы это ...

Есть код автономной навигации для самолёта. В нем рассчитывается когда самолёт достигнет точки назначения. Для этого на вход кода от датчика поступает пересчитанная путевая скорость самолёта. Пилот на дисплее видит два времени: текущее и время прибытия пересчитываемое каждую секунду. Со стороны кажется что оно стоит если самолёт держит рекомендуемую скорость полета или же спешит или отстаёт от расчётного. Для этого мне нужен код с двумя таймерами. Таймер текущего времени и расчетного времени в реальном времени.

S.E.
У меня все работает https://asciinema.org/a/gC7aKQ...

И вопрос по видео что за версия термукса у вас что вы так легко остановили код и какой командой? ^С ... Или может расширение какое то установлено? Вообще какие пакеты нужно ставить кроме ВИМ и gcc

Василий Александрович
Есть код автономной навигации для самолёта. В нем ...

Не понимаю, зачем тебе два таймера, когда рассчетное время прибытия это по сути текущее время плюс S/V.

Александр Д
Не понимаю, зачем тебе два таймера, когда рассчетн...

Так я так и делаю только идёт какое-то одно а второе стоит

S.E.
Ctrl-c

int nav_time(int fl_hours , int fl_minutes, int fl_seconds) { time_t t = time(NULL); struct tm tm = *localtime(&t); int year = tm.tm_year + 1900; int mon = tm.tm_mon + 1; int day = tm.tm_mday; int hours = tm.tm_hour; int minutes = tm.tm_min; int seconds = tm.tm_sec; printf("Время текущее: %02d/%02d/%d %02d:%02d:%02d\n", day, mon, year, hours, minutes, seconds); int c_time = hours * 3600 + minutes * 60 + seconds; int fl_time = fl_hours * 3600 + fl_minutes * 60 + fl_seconds; int res_time = c_time + fl_time; int res_hours = res_time / 3600; int res_minutes = res_time / 60 % 60; int res_seconds = res_time % 60; if(res_hours >= 24) { printf("Ожидаемое прибытие: %02d/%02d/%d %02d:%02d:%02d\n", day + 1, mon, year, res_hours - 24, res_minutes, res_seconds); } else printf("Ожидаемое прибытие: %02d/%02d/%d %02d:%02d:%02d\n", day, mon, year, res_hours, res_minutes, res_seconds); while(1) { t = time(NULL); tm = *localtime(&t); printf("%02d:%02d:%02d ", hours, minutes, seconds); fflush(stdout); seconds++; if(seconds == 60) { minutes += 1; seconds = 0; } if(minutes == 60) { hours += 1; minutes = 0; } if(hours == 24) { hours = 0; minutes = 0; seconds = 0; day += 1; } sleep(1); if(res_hours >= 24) { printf("Ожидаемое прибытие1: %02d/%02d/%d %02d:%02d:%02d\r", day + 1, mon, year, res_hours - 24, res_minutes, res_seconds); } else printf("Ожидаемое прибытие1: %02d/%02d/%d %02d:%02d:%02d\r", day, mon, year, res_hours, res_minutes, res_seconds); fflush(stdout); res_seconds++; if(res_seconds == 60) { res_minutes += 1; res_seconds = 0; } if(res_minutes == 60) { res_hours += 1; res_minutes = 0; } if(res_hours == 24) { res_hours = 0; res_minutes = 0; res_seconds = 0; day += 1; } sleep(1); } return 0; }

S.E.
Ctrl-c

Когда ходу изменить порядок то все ломается. Надо чтобы в разных строках было.

Василий Александрович
Когда ходу изменить порядок то все ломается. Надо ...

На том месте где время текущее должно идти а время ожидаемого прибытия должно быть на другой строке

S.E.
значит сделайте в разных строках раз надо.

В том то и дело что разные строки затираются одна другой

Василий Александрович
В том то и дело что разные строки затираются одна ...

дело в том, что вы используете управляющие символы, в вашем случае /r. Так же дело в том, что вы видимо не очень понимаете, что делает /r и что воообще имитирует терминал

²
#include <stdio.h> #include <stdlib.h> #include <t...

А как ты это сделал? Чтобы код в телеге так выделялся?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта