Приветствую Вас, Гость! Регистрация RSS

Пятница, 19.04.2024
Главная » Статьи » Cтатьи

Функция sprintf стандартной библиотеки stdio.h


sprintf
функция для вывода форматированных данных в строку. Для форматирования вывода используется символьная строка формата. Если функция находит в строке символ % с указанным типом формата и необязательными дополнительными полями, то соответствующий аргумент функции преобразуется при выходе в указанный формат. 

Каждый элемент строки формата состоит из нескольких полей:


% [флаг] [ширина] [точность] [модфикатор_типа] тип_формата

[ ] – необязательные, дополнительные поля.


Ниже таблицы с описанием полей и их действий.

Тип формата


флаги


Ширина
– это число задает минимальную ширину поля вывода в символах. Если число подлежащих выводу символов меньше, чем указано в этом поле, то слева и справа добавляются пробелы для достижения указанного значения. Если перед числом стоит нуль, то вместо пробелов добавляются нули.

Точность – задает число десятичных знаков, выводимых после точки. Действие поля зависит от типа данных.


Перед типом формата могут стоять различные модификаторы типа.


Модификаторы типа


Управляющие знаки

Они используются следующим образом:


Пример использования функции в среде CodeVisionAVR 1.25.9

 

 . . .
 sprintf( array,”text %u”,temp );
//дес.число из перемен.temp помещается в массив array
 lcd_puts( array );              //массив array содержит форматированную строку для вывода на ЖКИ
 . . .

Или из двух переменных:

 sprintf( array,”text %u,%x”,temp1,temp2 ); //выводим сначала из temp1, потом из temp2
 
                                        //( запятая будет отображаться ) по
                                          //связке: temp1 к %u, temp2 к %x.
 
 lcd_puts( array );

 . . . 

К переменным temp1, temp2 можно применять любые математические операции.

Вывод значения температуры, измеренное датчиком ds18b20 на индикатор:

 ...
 temp=ds18b20_temperature( 0 ) * 10;
 ...
 signs='+';
 ...
 sprintf( array,"t %c%i.%u\xdfC",signs,temp/10,temp%
10 );
 lcd_gotoxy( 4,1 );
 lcd_puts( array );
 ...




Категория: Cтатьи | Добавил: Автор (18.07.2010)
Просмотров: 46537 | Комментарии: 2 | Теги: вывод форматированной строки, функция spintf, описание полей и их действий функци, использование функции spintf | Рейтинг: 3.2/4
Всего комментариев: 2
1 Nick  
1
Мне надо вывести на индикатор число 5000 с запятой 50.00
я делаю вот так :
sprintf(lcd_buffer,"Fq:%i.%u",ts/100,ts%100);
В результате у меня только десятые после запятой, т.е 50.0. Сотые появляются только когда начинаешь увеличивать или уменьшать выводимое число..
Как сделать так, что бы оно выводилось именно 50.00 и уменьшение увеличение происходило бы в сотых разрядах??
P.S.
Спасибо за сайт. Нашел для себя много полезной информации

2 Артем  
1
Хорошая статья!!! Спасибо огромнейшее!=)
Буду учить..
А то нигде не пишется о работе библиотеки STDIO.H в CVAVR

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]