Проблемы с printf и sprintf |
![]() |
Добавил(а) microsin |
Различные вопросы по использованию операторов printf и sprintf. 1. Почему не получается вывод чисел float (%f): вместо числа печатается знак вопроса? По умолчанию стандарный ввод/вывод урезаный, в нем не поддерживается обработка формата плавайющей точки. Чтобы исправить это, нужно включить полную поддержку обработки printf/sprintf добавлением опции к командной строке линкера: -Wl,-u,vfprintf -lprintf_flt. Например, как это делается в проекте Atmel Studio: откройте свойства проекта, перейдите в раздел AVR/GNU Linker -> Miscellaneous, в поле ввода "Other Linker Flags:" добавьте строку -Wl,-u,vfprintf -lprintf_flt. Подробнее см. [1]. 2. Почему неправильно выводятся 32-битные числа без знака с помощью спецификатора формата %u? Потому что правильно использовать для таких чиcел спецификатор %lu. Также см. полный набор различных спецификаторов в статье [3]. [Ссылки] 1. AVR Studio + avr-gcc: использование sprintf для чисел float и double. |