mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

PRINTF(3S)                                           PRINTF(3S)

НАЗВАНИЕ 
        printf, fprintf, sprintf - вывод  с  преобразованием по
        формату

СИНТАКСИС 
        #include 
        
        int printf (format, val ...)
        char *format;
        
        int fprintf (stream, format, val ...)
        FILE *stream;
        char *format;
        
        int sprintf (s, format [, val] ...)
        char *s, *format;

ОПИСАНИЕ 
        Функция  printf  направляет  данные в стандартный поток
        вывода stdin. Функция fprintf направляет данные в поток
        вывода, заданный  аргументом  stream.  Функция  sprintf
        направляет   данные,  заканчивающиеся  пустым  символом
        (\0), в массив s; пользователь  должен  позаботиться  о
        выделении  достаточного  количества памяти для массива.
        Каждая функция возвращает число переданных символов (не
        считая пустого в  случае  sprintf),  или  отрицательное
        число, если при выводе обнаружилась ошибка.

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

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

        1.   Флаги  (один,  несколько  или  ни одного), которые
             уточняют смысл спецификации преобразования.

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

        3.   Точность,  задающая  минимальное количество цифр в
             изображении результата преобразования типа  d,  i,
             o, u, x, X, количество цифр после десятичной точки
             в изображении результата преобразования типа e, E,
             f, максимальное количество значащих цифр в изобра-
             жении  результата  преобразования  типа  g, G, или
             максимальное количество символов в изображении ре-
             зультата преобразования типа s. Точность записыва-
             ется в виде точки (.), за которой следует несколь-
             ко десятичных цифр; отсутствие цифр  интерпретиру-
             ется  как  ноль.  Дополнение результата символами,
             обусловленное  точностью,  подавляет   дополнение,
             обусловленное шириной поля.

        4.   Необязательный символ l, означающий, что относящи-
             еся  к нему преобразования d, i, o, u, x, X приме-
             няются к целым выводимым значениям типа long.  Для
             остальных преобразований символ l игнорируется.

        5.   Символ, обозначающий тип преобразования.

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

        Флаги и их смысл:

        -    Выравнивание результата  преобразования  по  левой
             границе.

        +    Обязательное  изображение знака (для чисел со зна-
             ком).

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

        #    Этот флаг означает, что значение  преобразуется  к
             "альтернативной  форме".  Для преобразований c, d,
             i, s, u этот флаг не имеет значения. Для  преобра-
             зования  типа o результат изображается с увеличен-
             ной точностью, с тем чтобы первая цифра результата
             была нулем. Для преобразований типа x, X ненулевой
             результат будет изображаться с  префиксом  0x  или
             0X.  Для преобразований типа e, E, f, g, G резуль-
             тат обязательно изобразится с  десятичной  точкой,
             даже  если  за  ней  нет цифр (обычно точка в этом
             случае опускается). Для преобразований g, G не по-
             давляются незначащие хвостовые  нули  (что  обычно
             делается).

        Символы, обозначающие тип преобразования, и их смысл:

        d, i, o, u, x, X 
             Целое  выводимое значение преобразуется в десятич-
             ное со знаком  (d,  i),  беззнаковое  восьмеричное
             (o),  десятичное (u) или шестнадцатеричное (x, X);
             буквы abcdef  изображают  шестнадцатеричные  цифры
             при  преобразовании x, а ABCDEF - при преобразова-
             нии X. Точность задает минимальное количество цифр
             в изображении  результата;  если  результат  можно
             изобразить  меньшим количеством цифр, то слева до-
             бавляются незначащие нули.  Значение  точности  по
             умолчанию равно 1. Результат преобразования нуля с
             нулевой точностью - пустая цепочка.

        f    Выводимое значение типов float или double преобра-
             зуется в десятичное число и  изображается  в  виде
             [-]ddd.ddd, где число цифр после точки определяет-
             ся точностью. Если точность опущена, то считается,
             что  она  равна 6; если точность равна нулю, точка
             не печатается.

        e, E Выводимое значение типов float или double преобра-
             зуется в десятичное число и  изображается  в  виде
             [-]d.ddde+/-dd,  где  перед точкой находится ровно
             одна цифра, а число цифр после точки  определяется
             точностью;  по  умолчанию  точность  равна 6; если
             точность равна нулю, точка не печатается. Специфи-
             кация E отличается от e только обозначением поряд-
             ка (E вместо e). Порядок всегда содержит по  край-
             ней мере две цифры.

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

        c    Печатается значение-символ.

        s    Выводимое  значение, заданное указателем, рассмат-
             ривается как цепочка символов, ограниченная пустым
             символом (\0); печать цепочки прекращается либо по
             ограничителю, либо после вывода количества  симво-
             лов,  равного значению точности. По умолчанию точ-
             ность считается бесконечно большой; в этом  случае
             цепочка  печатается до тех пор, пока не встретится
             ограничитель. Пустой указатель  (NULL)  дает  неп-
             редсказуемые результаты.

        %    Печать символа %; выводимых значений не требуется.

        Если порядок вещественного числа точкой равен 0x7FF, то
        число изображается в виде

             [-]NaN0xdddddddd

        где 0xdddddddd - шестнадцатеричное представление  стар-
        ших 32 бит мантиссы.

        Изображение результата никогда не усекается до заданной
        ширины поля; если результат не помещается  в  поле,  то
        оно расширяется до требуемой величины. Функции printf и
        fprintf  выдают  символы  так,  как  если бы вызывалась
        функция putc(3S).

ПРИМЕРЫ 
        1. Программа, печатающая свой текст  (она  должна  быть
        набрана на одной строке):

             char*t="char*t=%c%s%c;main(){char q=%d;
                     printf(t,q,t,q,q);}";
             main(){char q=34;printf(t,q,t,q,q);}

        Разобраться  в этой программе предоставляется читателю.
        Отметим только, что в обращении к функции printf первое
        вхождение t задает  формат,  а  второе  трактуется  как
        обычное выводимое значение. Формат содержит как обычные
        символы,  которые выводятся без изменений, так и специ-
        фикаторы преобразований.

        2. Напечатать число "pi" с пятью десятичными знаками:

             printf("pi = %.5f", 4*atan(1.0));

СМ. ТАКЖЕ 
        ecvt(3C), putc(3S), scanf(3S), stdio(3S).



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк