Руководство программиста для Linux
4b61df3a

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


Функции printf(...) в libc обеспечивают форматированный вывод и позволяют трансформировать аргументы. * int fprintf(FILE *stream, const char *format, ...), преобразует выводимые аргументы в соответствии с шаблоном и записывает его в stream. Формат определяется аргументом format. Функция возвращает число записанных символов или отрицательное число в случае ошибки.

format содержит два типа объектов: обычные символы и информацию, как трансформировать или форматировать аргументы.

Форматная информация должна начинаться с %, за которым следуют значения для формата, дальше идет символ для трансляции (чтобы напечатать знак %, используйте %%). Возможны следующие значения для формата: - Флаги * - Форматированный аргумент будет при печати прижат влево на своем поле. * + Каждое число будет напечатано со знаком, например, +12 или -2.32. - Пробел Если первый символ - не знак, то будет вставлен пробел. - 0 Для чисел ширина поля будет заполнена слева нулями. - #

Изменяет вывод в зависимости от трансформации для аргумента:

  • Для o первое число будет 0.
  • Для x или X будет напечатано в конце 0x или 0X соответственно.
  • Для e, E, f, F вывод имеет десятичную точку.
  • Для g или G в конце аргумента будут напечатаны нули.
  • - Число, указывающее минимальную ширину поля

    Трансформированный аргумент печатается в поле, ширина которого не меньше, чем сам аргумент. С этим числом вы можете увеличить ширину поля. Если аргумент меньше, то оставшаяся часть поля заполняется пробелами или нулями. - Точка для отделения ширины поля и точности

    - Число для точности

    Возможные значения для трансформации смотри в таблице 8.1. * int printf(const char *format, ...) То же самое, что fprintf(stdout, ...). * int sprintf(char *s, const char *format, ...) То же, что и printf(...), но вывод будет записан в символьный указатель s (с последующим \0). (Вы должны захватить достаточно памяти для s.) * vprintf(const char *format, va_list arg) vfprintf(FILE *stream, const char *format, va_list arg) vsprintf(char *s, const char *format, va_list arg)

    То же, что и для вышеописанных функций, только список аргументов находится в arg.



    Содержание раздела