2014-02-05 2 views
1

Дано:Дисплей клещ Количество

  • число системных тиков, так как холодный старт через unsigned int systemTicks(void);
  • число микросекунд в системе клеща через unsigned int usPerTick(void);

Как создать фиксированный -строчная метка времени в C? Я могу быть гибким в этом формате, но хотел бы поддерживать максимум 100 минут и сохранять миллисекундное разрешение. Один примерный формат будет "99:59:999", то есть это было 99 минут и 59,999 секунды с момента холодного запуска.

printf Позволяет записывать десятичные знаки (минута, секунда, мс) с минимальной шириной, но не максимальной шириной. Я ищу простые решения.

+0

Это полезно: http://stackoverflow.com/questions/14130747 – Caprooja

ответ

1

Вы хотите напечатать фиксированную ширину, ведущую нулевую дробную часть для микросекунд. Поскольку существует 6 цифр микросекунд, вы хотите,

sprintf(timestamp,"%d:%02d.%06d",ticks/60,ticks%60,mseconds); 

И добавить структура/указатель аромат по вкусу ...

+0

Я пошел с 'sprintf (временная метка,"% 02d:% 02d.% 03d ", минуты, секунды, миллисекунды);'. Для строки с фиксированной шириной минут также нужен начальный ноль. Я также добавил проверки для обеспечения того, чтобы минуты, секунды и миллисекунды не превышали 2,2 и 3 цифры соответственно, чтобы гарантировать, что буфер временной метки не переполнен. – Caprooja

+1

Отлично! Я использовал аналогичную схему для регистрации времени с высоким разрешением для встроенных систем и т. Д. – ChuckCottrill

Смежные вопросы