Программирование AVR: решение проблем, FAQ Проблемы с printf и sprintf Sat, November 17 2018  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Проблемы с 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.
2stdio.h: стандартные возможности ввода/вывода.
3. IAR EWB ARM: форматированный вывод printf библиотеки DLIB.
4. Секреты printf.

 

Добавить комментарий


Защитный код
Обновить

Top of Page