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,

Другие вопросы по тегам