Вы получаете мусор из этого кода:
time_t current_time;
struct tm * time_info;
char timeString[8];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(timeString, 8, "%H:%M:%S", time_info);
puts(timeString);
Поскольку вы не допускаете места для нулевого терминатора (\ 0) в строке, поэтому, когда строка печатается, он не знает, где находится конец и интерпретирует случайный мусор в следующем бите памяти как часть строки.
Измените это на:
time_t current_time;
struct tm * time_info;
char timeString[9]; // space for "HH:MM:SS\0"
time(¤t_time);
time_info = localtime(¤t_time);
strftime(timeString, sizeof(timeString), "%H:%M:%S", time_info);
puts(timeString);
И это будет работать правильно, потому что strftime()
будет достаточно места для добавления \ 0. Обратите внимание, что я использую sizeof (массив), чтобы избежать риска забыть изменить число в обоих местах.