snprintf не распечатывает преобразованное время, используя strftime?
Я взял этот ответ от SO:
/questions/17136604/vremennaya-struktura-v-pechatnyij-format/17136637#17136637
так что я могу печатать временные структуры в удобном формате. Я должен был изменить "%s.%06d"
за "%s.%06ld"
потому что я получал предупреждения компилятора:
void printTimeval(struct timeval& tv){
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];
nowtime = tv.tv_sec;
nowtm = localtime(&nowtime);
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
}
Однако, когда я прохожу правильное время, ничего не печатается.
Я проверил количество секунд во временном интервале, который я передал, перед вызовом моей функции, и он возвращает 1404120855, поэтому я уверен, что мой временной интервал правильный, и проблема связана с функцией?
1 ответ
Все snprintf()
делает это отформатировать строку. Вы никогда не распечатываете полученную строку в buf
, Добавить что-то вроде:
printf("%s\n", buf);
или же
puts(buf);
Кроме того, вы должны иметь приведение к long
для этого tv_usec
поле, так как вы не можете знать тип определения типа long
,