Литеры-спецификаторы и их смысл при выводе 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Литеры-спецификаторы и их смысл при выводе



-------------------------------------------------------------------------------------------------------

литера тип аргумента; вид печати

-------------------------------------------------------------------------------------------------------

d,i int; знаковая десятичная запись.

о int; беззнаковая восьмеричная запись (без ведущего 0).

x,X int; беззнаковая шестнадцатиричная запись (без ведущих 0x или 0X), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X.

u int; беззнаковое десятичное целое.

c int; единичная литера после преобразования в unsigned char.

s char *; литеры строки печатаются, пока не встретится ‘\0’ или не бу- дет напечатано количество литер, указанное точностью.

f double; десятичная запись вида [-]mmm.ddd, где количество d спе- цифицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки.

e,E double; десятичная запись вида [-]m.dddddde±xx или вида [-]m.ddddddE±xx, где d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки.

g,G double; используется %e и %E, если экспонента меньше 4 или боль- ше или равна точности; в противном случае используется %f. Хво- стовые нули и точка в конце не печатаются.

p void*; печатает в виде указателя (представление зависит от реализа- ции).

% никакие аргументы не преобразуются; печатается %

 

 

int printf (const char* format,...)

семантика функции полностью эквивалентна fprintf (stdout, const char* format,...)

 

int sprintf (char *s, const char* format,...)

sprintf действует так же, как и printf, только вывод осуществляется в строку s, которая завершается литерой ‘\0’. Строка s должна быть достаточно большой, чтобы вместить результат вывода. Возвращает количество записанных литер (без учета ‘\0’).

Форматный ввод

Функции форматного ввода осуществляют ввод информации в соответствии с форматом.

 

int fscanf (FILE* stream, const char* format,...)

функция читает данные из потока stream под управлением формата format. Введенные данные присваиваются аргументам, следующим за аргументом format. Все эти аргументы должны быть указателями. Функция завершает работу, если исчерпался формат или возникла ошибка преобразования. Возвращает EOF, если исчерпан файл или возникла ошибка; в остальных случаях - количество введенных и преобразованных значений.

Строка формата обычно содержит спецификации преобразования, которые используются для управления вводом. Каждая спецификация преобразования начинается символом % и заканчивается литерой-спецификатором преобразования. Между % и литерой-спецификатором могут быть расположены символы управления вводом (в том порядке, в каком они перечислены ниже):

* символ *, который подавляет присваивание;

* число, определяющее максимальную ширину поля ввода;

* модификаторы h, l или L. Литерам-спецификаторам d, i, o, u, x может предшествовать литера h, если соответствующий аргумент является указателем на short (а не на int), или литера l, если аргумент - указатель на long. Литерам-спецификаторам e, f, g может предшествовать литера l, если аргумент - указатель на double (а не на float), или литера L, если аргумент - указатель на long double.

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

Под пробельными литерами понимаются литеры пробела, табуляции, новой-строки, возврата-каретки, вертикальной-табуляции и смены-страницы.

Спецификация преобразования определяет способ интерпретации очередного поля ввода. Поле ввода определяется как строка непробельных литер; при этом ввод строки прекращается, если встретилась пробельная литера либо исчерпана ширина поля ввода. Полученное значение присваивается переменной, на которую указывает соответствующий аргумент. Если присваивание подавляется при помощи *, то поле ввода пропускается, но никакого присваивания не происходит.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 346; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.43.119 (0.004 с.)