Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Watchdog
2019-07-12 10:36:47

Здесь больше информации: https://sharpened.ucoz.ru/lib/polnyj_spravochnik_po_c-gerbert_shildt-2006.pdf . Но это не исключает изучения образовательной литературы по программированию. Функция sprintf(.) не позволяет выводить все пробелы вместо нуля, один ноль всё равно останется. Читайте, учитесь, подробно разбирайте тексты примеров и всё получится.

ckret
2019-07-12 09:04:00

Спасибо за информацию по NULL, когда самоучка это похоже на дом с пропущенными кирпичами.
Сама загвоздка возникла с sprintf, пробел это переменная String (s), а числовая (d). Библиотека возвращает  hour() как char вроде.
И если числовая переменная пустая при %02d , то вместо пустоты имеем ноль, если сделать записть %2d , то теряется задумка в добавление ноля в числах меньше 10.
Если кто то может помочь привести запись в божеский вид, буду очень благодарен.

Watchdog
2019-07-12 07:16:53
ckret пише:

Добрый вечер, подскажите, как правильно сформировать sprintf для анимации настройки времени, когда мигают часы. Спасибо!

if(flashShowTimer + 1000 <= millis()){
     flashShow = !flashShow;
     flashShowTimer = millis();

      sprintf(szMesg, "%02d%c%02d", (flashShow ? hour() : NULL),":" , minute());
     }     
  

NULL это указатель на "ничего", с условным численным значеним адреса, а не переменная. Обычно равен нулю. И оператор  сравнения наоборот. Чтобы мигали, нужно поочерёдно, через интервал времени, писать то пробелы то значения. Если работает, как нужно - можно считать, что правильно. А у вас всё неправильно.

vvr
2019-07-12 07:12:50

if(flashShowTimer + 1000 <= millis()) - не корректная запись.

if(millis() - flashShowTimer >= 1000) - так правильно.

ckret
2019-07-11 20:25:42

Добрый вечер, подскажите, как правильно сформировать sprintf для анимации настройки времени, когда мигают часы. Спасибо!

if(flashShowTimer + 1000 <= millis()){
     flashShow = !flashShow;
     flashShowTimer = millis();

      sprintf(szMesg, "%02d%c%02d", (flashShow ? hour() : NULL),":" , minute());
     }     
  

Підвал форуму