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

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

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

32 ответов

52 просмотра

#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 часовых поясах это константа

BlackBloodyRabbit 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...

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта