• Число, задающее точность, которое специфицирует максимальное количество символов, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях e, E или f, или количество значащих цифр для g или G - преобразования, или минимальное количество цифр при печати целого (до необходимой ширины поля число дополняется слева нулями).
• Модификаторы h, l (буква ell) или L. "h" указывает на то, что соответствующий аргумент должен печататься как
Ширина, или точность, или обе эти характеристики могут быть специфицированы с помощью *; в этом случае необходимое число "извлекается" из следующего аргумента, который должен иметь тип
Символы-спецификаторы и разъяснение их смысла приведены в таблице B-1. Если за % нет правильного символа-спецификатора, результат не определен.
int printf(const char *format, ...);
printf(...) полностью эквивалентна
int sprintf(char *s, const char *format, ...)
sprintf действует так же, как и
int vprintf (const char *format, va_list arg)
int vfprintf (FILE *stream, const char *format, va_list arg)
int vsprintf (char *s, const char *format, va_list arg)
Функции vprintf, vfprintf и vsprintf эквивалентны соответствующим
Таблица B-1. Преобразования
Символ | Тип аргумента; вид печати |
---|---|
d, i | int; знаковая десятичная запись |
o | unsigned int; беззнаковая восьмеричная запись (без 0 слева) |
x, X | unsigned int; беззнаковая шестнадцатеричная запись (без 0x или 0X слева), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X |
u | unsigned int; беззнаковое десятичное целое |
c | int; единичный символ после преобразования в |
s | char *; символы строки печатаются, пока не встретится '\0' или не исчерпается количество символов, указанное точностью |
f | double; десятичная запись вида [-]mmm.ddd, где количество |
e, E | double; десятичная запись вида [-]m.dddddde±xx или запись вида [-]m.ddddddE±xx, где количество |
g, G | double; используется %e и %E, если порядок меньше -4 или больше или равен точности; в противном случае используется %f. Завершающие нули и точка в конце не печатаются |
p | void *; печатает в виде указателя (представление зависит от реализации |
n | int *; число символов, напечатанных к данному моменту данным вызовом |
% | никакие аргументы не преобразуются; печатается % |
B1.3. Форматный ввод
Функции scanf имеют дело с форматным преобразованием при вводе
int fscanf(FILE *stream, const char *format, ...);