Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: sprintf() в IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vladi33
Здравствуйте!
Как сделать вывод числа в строку фиксированной ширины
т.е: Хотелось бы увидеть "001" а не "1"
a=1;
sprintf(buf,"%3d",a);
не работает, показывает просто "3d"
IgorKossak
1. В свойствах проекта General Options / Library Optins / Printf formatter выбрать Full вместо Small по умолчанию.
2. Возможно, в *.xcl файле придётся закомментировать соответствующие строки (в комментариях сказано какие).
3. Форматную строку лучше вынести в отдельный __flash стринг, использовать sprintf_P(), которой и передать указатель на этот стринг.
Brukkel Dmitry
Только если оставить %3d единица будет выводиться как два пробела и 1, а чтобы увидеть 001 надо поставить %03d
BVU
Всем привет!
Я пользуюсь sprintf (#include <stdoi.h>, размер стэка: 255) таким образом:
sprintf(buff, "%d", integer); - для вывода int переменной/константы или
sprintf(buff, "%ld", long integer); - для вывода удлиненной переменной/константы.
Но, когда попробовал вывести float (sprintf(buff, "%f", float)wink.gif - ничего не получилось(выводится как: 'f'). Стал читать *.pdf-ки там говориться, что float не поддерживается для minimal. Сделал в опциях full (для printf) - результат тот же что и раньше.
Посмотрел файлы *.xcl, там их много какой из них поправить непонятно...
Может, кто знает, как эту ситуацию побороть?
(работаю на "C", EWAVR-EV-310A, МК - ATmega8).

С уважением,
BVU
IgorKossak
Для начала надо убедиться, что конфигурирование осуществляется при помощи *.xcl файла, а не при помощи диалога.
Для этого надо снять галочку в поле Configure system using dialog... в меню Project / Options / General / Target.
Затем определить какой файл используется для конфигурирования (Там же / Linker / Config (v4.10) или / XLINK / Include (v3.10)), сделать копию этого файла в папку своего проекта, чтобы не править оригинальный и указать на него в настройках (Override default).
Далее следует закомментировать следующие нужные строки, начинающиеся с -e (Dlib для С++, Clib для С):
Код
/* Select reduced "printf" support to reduce library size.
  See configuration section in manual concerning printf/sprintf. */

/*Dlib*/
-e_Printf_1=_Printf

/*Clib*/
-e_small_write=_formatted_write
-e_small_write_P=_formatted_write_P
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.