русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

L - указывает, что следующий после L спецификатор е, Е, f, g или G применяется к аргументу типа long double.


Дата добавления: 2013-12-23; просмотров: 785; Нарушение авторских прав


 

Примеры указания ширины_поля и точности:

%d - вывод десятичного целого в поле, достаточном для представления всех его цифр и знака;

%7d - вывод десятичного целого в поле из 7 позиций;

%f - вывод вещественного числа с целой и дробной частями (выравнивание по правому краю; количество цифр в дробной части определяется реализацией и обычно равно 6);

%7f - вывод вещественного числа в поле из 7 позиций;

%.3f - вывод вещественного числа с тремя цифрами после десятичной точки;

%7.3f - вывод вещественного числа в поле из 7 позиций и тремя цифрами после десятичной точки;

%.0f - вывод вещественного числа без десятичной точки и без дробной части;

%15s - печать в выводимой строке не менее15 символов;

%.12s - печать строки длиной не более 12 символов ("лишние" символы не выводятся);

%12.12 - печать всегда в поле из 12 позиций, причем лишние символы не выводятся, используется всегда 12 позиций. Таким образом, точное количество выводимых символов можно контролировать, задавая и ширину_поля, и точность (максимальное количество символов); %-15s - выравнивание выводимой строки по левому краю;

%08f - вывод вещественного числа в поле из 8 позиций. Не занятые значащими цифрами позиции заполняются нулями.

Функция форматного вывода printf( ) предоставляет множество возможностей по форматированию выводимых данных, однако наибольший интерес представляют построение столбцов данных и их выравнивание по левому или правому краю заданного поля.

В программе, приводимой ниже, на экран дисплея выводится список товаров в магазине. В каждой строке в отдельных полях указываются: номер товара (int), код товара (int), наименование товара (строка символов) и цена товара (float).

 

Результат выполнения программы:

 

 

Форматная строка в параметрах функции printf( ) обеспечивает следующие преобразования выводимых значений:



1) переменная number[i] типа intвыводится в поле шириной 3 символа и прижимается к левому краю (%-3d);

2) переменная code[i] типа intвыводится в поле шириной 5 символов и прижимается (по умолчанию) к правому краю (%5d);

3) строка из массива design[i] выводится в поле шириной 20 символов и прижимается к левому краю (%-20s). Если в данной спецификации преобразования будет указано меньшее, чем 20, количество позиций, то самая длинная строка будет все равно выведена, однако последний столбец не будет выровнен;

4) переменная price[i] типа floatвыводится в поле шириной 8 символов, причем после десятичной точки выводятся 3 символа, и выводимое значение прижимается к правому краю.

Между полями, определенными спецификациями преобразований, выводится столько пробелов, сколько их явно задано в форматной строке между спецификациями преобразования. Таким образом, добавляя пробелы между спецификациями преобразования, можно производить форматирование всей выводимой таблицы.

Напомним, что любые символы, которые появляются в форматной строке и не входят в спецификации преобразования, копируются в выходной поток. Этим обстоятельством можно воспользоваться для вывода явных разделителей между столбцами таблицы. Например, для этой цели можно использовать символ '*' или '|'. В последнем случае форматная строка в функции printf( )будет выглядеть так: "%-3d | %5d | %-20s | %8.3f/n", и результат работы программы будет таким:

 

 

Форматный ввод из входного потока. Форматный ввод из входного потока осуществляется функцией scanf( ).Прототип функции scanf( )имеет вид:

 

int scanf(const char * format,. ..);

 

При обращении к функции scanf( ) возможны две формы задания первого параметра:

int scanf ( форматная_строка, список_аргументов );

int scanf( указатель_на_форматную_строку, список_аргументов);

Функция scanf( ) читает последовательности кодов символов (байты) из входного потока и интерпретирует их в соответствии с форматной_строкой как целые числа, вещественные числа, одиночные символы, строки. В первом варианте вызова функции форматная строка размещается непосредственно в списке фактических параметров. Во втором варианте вызова предполагается, что первый фактический параметр - это указатель типа char*, адресующий собственно форматную строку. Форматная строка в этом случае должна быть определена в программе как обычная строковая константа или переменная.

После преобразования во внутреннее представление данные записываются в области памяти, определенные аргументами, которые следуют за форматной строкой. Каждый аргумент должен быть указателемна переменную, в которую будет записано очередное значение данных и тип которой соответствует типу, указанному в спецификации преобразования из форматной строки.

Если аргументов недостаточно для данной форматной строки, то результат зависит от реализации (от операционной системы и от системы программирования). Если аргументов больше, чем требуется в форматной строке, "лишние" аргументы игнорируются.

Последовательность кодов символов, которую функция scanf( ) читает, из входного потока, как правило, состоит из полей (строк), разделенных символами промежутка или обобщенными пробельными символами. Поля просматриваются и вводятся функцией scanf( ) посимвольно. Ввод поля прекращается, если встретился пробельный символ или в спецификации преобразования точно указано количество вводимых символов (см. ниже).

Функция scanf( ) завершает работу, если исчерпана форматная строка. При успешном завершении scanf( ) возвращает количество преобразованных и введенных полей (точнее, количество объектов, получивших значения при вводе). Значение EOFвозвращается при возникновении ситуации "конец файла"; значение -1 - при возникновении ошибки преобразования данных.

Форматная строка ограничена двойными кавычками и может включать:

• пробельные символы, отслеживающие разделение входного потока на поля. Пробельный символ указывает на то, что из входного потока надо считывать, но не сохранять все последовательные пробельные символы вплоть до появления непробельного символа. Один пробельный символ в форматной строке соответствует любому количеству последовательных пробельных символов во входном потоке;

• обычные символы, отличные от пробельных и символа '%'. Обработка обычного символа из форматной строки сводится к чтению очередного символа из входного потока. Если прочитанный символ отличается от обрабатываемого символа форматной строки, функция завершается с ошибкой. Несовпавший символ и следующие за ним входные символы остаются непрочитанными;

• спецификации преобразования.

Спецификация преобразования имеет следующую форму:

 

% * ширина_поля модификатор спецификатор

 

Все символы в спецификации преобразования являются необязательными, за исключением символа '%', с которого она начинается (он и является признаком спецификации преобразования), и спецификатора, позволяющего указать ожидаемый тип элемента во входном потоке (табл. 7.2).

 

Таблица 7.2



<== предыдущая лекция | следующая лекция ==>
Спецификаторы форматной строки для функции форматного вывода | Спецификаторы форматной строки для функции форматного ввода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.