реклама на сайте
подробности

 
 
> sprintf() в IAR, как сделать вывод "%3d"
Vladi33
сообщение Jul 5 2005, 10:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 13-05-05
Пользователь №: 4 979



Здравствуйте!
Как сделать вывод числа в строку фиксированной ширины
т.е: Хотелось бы увидеть "001" а не "1"
a=1;
sprintf(buf,"%3d",a);
не работает, показывает просто "3d"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
IgorKossak
сообщение Jul 5 2005, 11:27
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



1. В свойствах проекта General Options / Library Optins / Printf formatter выбрать Full вместо Small по умолчанию.
2. Возможно, в *.xcl файле придётся закомментировать соответствующие строки (в комментариях сказано какие).
3. Форматную строку лучше вынести в отдельный __flash стринг, использовать sprintf_P(), которой и передать указатель на этот стринг.
Go to the top of the page
 
+Quote Post
Brukkel Dmitry
сообщение Jul 5 2005, 11:54
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 27-05-05
Из: Санкт-Петербург
Пользователь №: 5 479



Только если оставить %3d единица будет выводиться как два пробела и 1, а чтобы увидеть 001 надо поставить %03d
Go to the top of the page
 
+Quote Post
BVU
сообщение Jul 8 2005, 05:33
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Всем привет!
Я пользуюсь 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


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 8 2005, 10:10
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Для начала надо убедиться, что конфигурирование осуществляется при помощи *.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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016