Я хочу распечатать время в C, используя asctime()
, но когда распечатывается текст, случайные символы добавляются после timeString
. Кроме того, текст syslog()
, распечатанный в файле журнала, отличается от текста, напечатанного в оболочке, на printf()
. Под кодом я предоставил точный вывод с обоих выходов. Как мне избавиться от этого поведения? Код работает на RaspberryPi, и я вошел в систему через терминал MacOS по умолчанию.
time_t rawTime;
time(&rawTime);
struct tm timeInfo = *gmtime(&rawTime);
// ...
char *log;
char *timeString = strdup(asctime(&timeInfo));
asprintf(&log, "UTC: %s %.*s Last status: %s. New status: %s.",
timeString, 5, " ", "Hello", "World");
openlog("httpd-status-notifier", LOG_PID, LOG_USER);
syslog(logLevel, "%s", log);
printf("%s\n", log);
// ...
Syslog:
Dec 22 17:18:17 rasp httpd-status-notifier[25458]: UTC: Sun Dec 22 17:18:17 2019#012 Last status: Hello. New status: World.
(Здесь syslog
производит #012
)
Оболочка (printf) :
UTC: Sun Dec 22 17:18:17 2019
Last status: Hello. New status: World.
(Здесь printf
производит новый символ строки)
Кстати, да, я заметил, что syslog
уже регистрирует дату.