Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rudenko_c_tasks.doc
Скачиваний:
54
Добавлен:
12.11.2019
Размер:
666.62 Кб
Скачать
        1. Форматный вывод

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

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

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

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

  1. флаги

- указывает, что преобразованное значение аргумента должно быть прижато к левому краю поля;

+ предписывает указывать знак числа;

пробел если первая литера - не знак, то числу должен предшествовать пробел;

0 указывает, что числа должны дополняться ведущими нулями до всей ширины поля;

указывает на одну из следующих форм вывода: для о первой цифрой должен быть 0; для х или Х ненулевому результату должны предшествовать 0х или 0Х; для e, E, f, g и G вывод всегда должен содержать десятичную точку; для g и G хвостовые нули не отбрасываются.

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

  2. точка, отделяющая указатель ширины поля от указателя точности.

  3. число, задающее точность, которое определяет максимальное количество литер, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях e, E или f, или количество значащих цифр для g- или G-преобразования, или минимальное количество цифр при печати целого (до необходимой ширины поля число дополняется ведущими нулями).

  4. модификаторы h, l или L. Литера h указывает, что соответствующий аргумент должен печататься как short или unsigned short; литера l - как long или unsigned long; литера L - как long double.

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

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

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

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

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’).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]