Возвращаемое значение. - количество выведенных значений.
Прототип функцииfprintf:
int fprintf ( FILE * stream, char * format [, arg ... ] ) ;
Функция выводит данные в выводной потокstream. Прототип функцииsprintf:
int sprintf (char * str, char * format [, arg ... ] ) .
Функцияsprintfосуществляет вывод не в файл, а в строкуstr, расположенную в ОП. Таким образом, производится пересылка значений аргументов в строку в соответствии с форматами.
Строкаformat(описания форматов) обрабатывается слева направо. Первый формат соответствует первому аргументу, второй - второму и т. д. Если аргументов больше, чем форматов, лишние аргументы игнорируются. Если количество форматов больше количества аргументов, результат будет неопределенным.
Строка описания форматов вывода может содержать:
1) спецификации формата, которые определяются символом % - для вывода .значений, определенных списком аргументов, если они есть;
2) любые символы, которые должны быть выведены в выходной поток;
3) управляющие коды, то естьEsc-последовательности для управления процессом вывода (см. табл. 17).
Форматы начинаются с символа % и имеют следующую форму:
% [ flags ] [ w ] [ .p ] [ F | N | h | l | L ] тип
Каждое поле формата это символ или число. Тип определяет, как будет интерпретироваться аргумент, соответствующий данному формату: как символ, строка или число. В простейшем случае формат может иметь символ % и тип. Например:
Тип
Выводимое значение
Тип аргумента
d, i
десятичное целое со знаком
int
о
восьмеричное целое без знака
int
u
десятичное целое без знака
unassigned int
x
шестнадцатеричное целое без знака, использующее символы "аЬсdef"
int
X
“—” "АВСDEF"
int / long int
е, Ё
число с плавающей точкой
float / double
f, F
число с фиксированной точкой
float / double
с
символ, в том числе пробел
char
s
строка
сhаr
Состав и назначение символовflags:
-- результат прижимается в выделенном для него поле влево, оставляя справа пробелы; по умолчанию все результаты в выделенном поле прижимаются вправо;
+- выводит перед числом + или -; по умолчанию - только-;
_- добавляет при выводе положительных чисел слева от числа пробел вместо знака+;
#- при выводе по форматам о,х или X добавляется префикс числа: 0, 0х или 0X соответственно.
Полеw- неотрицательное десятичное целое; определяет минимальное количество выводимых символов. Если количество выводимых символов меньше, слева или справа от него (в зависимости от значенияflags) остаются пробелы. Если количество выводимых символов больше, чем заданоw, илиwне задано вообще, выводятся все символы аргумента (в том числе - все целые разряды числа).
- при выводе целых значений форматами d, i, o, u, x, X - вывод не менеерцифр; если их меньше, слева добавляются нули;
- при выводе вещественных значений форматомfилиlf- количество дробных разрядов;
- при выводе вещественных значений форматомеилиle- разрядность дробной части выводимой мантиссы;
- при выводе строк форматомs: точное количество символов, которое должно быть выведено; если выводимая строка содержит символов больше, чем значениер, лишние правые символы не выводятся;
- на вывод символов форматомсзначениерне влияет.
Форматом “%hi” можно выводить целые значения <= 32767.
Форматы сl- уточнением аргумента: "%ld", “%lo", "%lu", "%lx" - можно использовать только для вывода данных уточненного типа; например "%ld” можно использовать только для вывода значений типа long; а "%lf” и “%le" - для float и double. Форматами “Lf” и “Le” можно выводить только значения типа long или double.
Если за символом % следует символ, не являющийся символом формата, % просто копируется в выводной поток как обычный символ. Все неформатные символы строкиformatпросто копируются в выходной поток в порядке их следования в строкеformat. Например, оператор: