Всех приветствую!
Необходимо выводить дату-время в лог-файл.
char* get_datetime_str_alt1(char *str_datetime)
{
char buff[64]={'\0'};
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
strftime(buff, sizeof(buff), "%e-%b-%Y %Z %T", localtime(&ts.tv_sec));
sprintf(str_datetime, "%s", buff);
return str_datetime;
}
char* get_datetime_str_alt2(char *str_datetime)
{
char buff[64]={'\0'};
time_t t = time(NULL);
struct tm *local = localtime(&t);
strftime(buff, sizeof(buff), "%e-%b-%Y %Z %H:%M:%S", local);
sprintf(str_datetime, "%s", buff);
return str_datetime;
}
Эти два варианта работают после gcc
1-Aug-2024 MSK 12:32:45: Start!
1-Aug-2024 MSK 12:32:45: Bla-bla
1-Aug-2024 MSK 12:32:46: End!
, но ничего не выводят после mingw:
: Start!
: Bla-bla
: End!
Работает отлично только
char* get_datetime_str(char *str_datetime)
{
time_t t = time(NULL);
sprintf(str_datetime, "%s", ctime(&t) );
char *p = strchr(str_datetime, '\n');
*p = '\0';
return str_datetime;
}
Но форматирование уже выбираю не я:
Thu Aug 01 12:13:08 2024: Start!
Thu Aug 01 12:13:08 2024: Bla-bla
Thu Aug 01 12:13:09 2024: End!
По идее и так работает. Но все таки какая-то неудовлетворенность остается. Сталкивался кто-нибудь с подобным эффектом?
Подозреваю нужно обновлять mingw, но так не хочется: столько библиотек опять устанавливать (к тому же я уже забыл как это делал).
PS gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
x86_64-w64-mingw32-gcc (GCC) 9.3-win32 20200320 wincrt