Ярлыки

вторник, 12 апреля 2011 г.

printf, fprintf, sprintf - форматный вывод

Описание

Осуществляют форматную печать.
         fprintf   -  пишет литеры в поток fp.
         printf    -  пишет литеры в поток stdout.
         sprintf   -  пишет литеры в память buffer.
      Аргументы  интерпретируются  в соответствии со строкой
      формата,  оканчивающейся 0.  Строка  формата  является
      последовательностью  литер  со  встроенными  командами
      преобразования.  Литеры,  не являющиеся частью команд,
      подлежат выводу. Команды преобразования состоят из :
      '%'{flag}[field_width]['.'precision][l или L]conversion_char
   где :
      %       Означает начало команды преобразования.
              Чтобы напечатать '%', надо использовать '%%'.
      flag characters     Литеры режимов
         -     - Означает необходимость выравнивания
                 информации по левому краю поля вывода.
         +     - Означает, что преобразование, включающее
                 знак, должно начинаться с + или -.
        пробел
       (space) - Означает, что в случае преобразования поло-
                 жительного  результат начинается с пробела.
                 Режим + перекрывает режим space.
         #     - Имеет смысл  для преобразования 'x' или 'X'
                 и приводит к добавлению перед  выводом сим-
                 волов 0x или 0X.
                 Для преобразования 'о' в вывод  добавляется
                 лидирующий ноль.
                 В случае преобразований e, E, f, g, G всег-
                 да появляется  десятичная  точка.  Если это
                 преобразование  g  или  G,  замыкающие 0 не
                 будут опускаться.
      Field_width      Ширина поля
         Десятичное целое, управляющее минимальным количест-
         вом печатаемых  литер.  Если  действительное  число
         литер меньше, чем  field_width,  это  число  допол-
         няется пробелами.  Если строка цифр field_width на-
         чинается с 0, для дополнения используется 0.
         Если field_width есть литера *, действительное зна-
         чение длины поля вывода берется из следующего цело-
         го аргумента. Если field_width отрицательно, счита-
         ется, что задан флаг '-',  а в качестве field_width
         берется  абсолютное  значение.  Если действительное
         число литер превосходит field_width, это поле соот-
         ветственно увеличивается.
      Precision    Точность
         Эта строка цифр, следующая за '.',  определяет точ-
         ность преобразования. Если цифры за точкой отсутст-
         вуют, точность равна 0.  Для  преобразования  целых
         точность есть минимальное количество выводимых цифр.
         Для 'g' и 'G'- это максимальное количество значащих
         цифр. Для 'e', 'E' и 'f'- это количество цифр после
         десятичной точки.  Для 's' - это максимальное коли-
         чество литер в строке. Если точность включает лиди-
         рующий 0, тогда свободное поле вывода заполняется 0.
      l
         В случае спецификаций преобразования o, b, u, x, X,
         i, d  используемый аргумент  должен быть типа long,
         исключение составляет преобразование p, когда аргу-
         мент должен  быть  дальним  указателем.  Для других
         преобразований этот флаг игнорируется.
      L
         Этот флаг игнорируется.
      Conversion_char    Преобразующая литера
         Это одна из литер  d, i, o, b, u, x, X, f, e, E, g,
         G, c, s, p, n, %.  Действие  других  литер  неопре-
         делено.
      d,i,o,b,u,x,X
         Соответсвующий целый аргумент преобразуется в стро-
         ку цифр, причем, 'o' производит беззнаковое восьме-
         ричное, `b' - беззнаковое двоичное, 'u' - беззнако-
         вое десятичное,  'x' и 'X' - беззнаковое шестнадца-
         тиричное,  'i' и 'd' - десятичное со знаком. В слу-
         чае  'x'  используются  строчные  цифры,   в случае
         'X' - заглавные.  Если не специфицирована точность,
         используется  умолчание 1.  Если  реально выводится
         меньше цифр,  чем определено  точностью,  вывод до-
         полняется  лидирующими  пробелами.  Если аргумент и
         точность равны 0, ничего не печатаются.
      c
         Младший значащий  байт  целого аргумента печатается
         как литера.
      e,E
         Аргумент типа  double  печатается,  используя пред-
         ставление ([-]d.dddddd+-dd). Здесь перед десятичной
         точкой одна цифра и precision цифр после. Умолчание
         для precision равно 6. Если precision 0, десятичная
         точка не печатается.  В экспоненте вместо 'e' будет
         использовано 'E',  если задана литера 'E'. В экспо-
         ненте присутствуют как минимум две цифры.
      f
         Аргумент  типа  double  печатается  в  виде  строки
         [-]dd.dddd.  Количество цифр после десятичной точки
         задается precision,  которое  по умолчанию равно 6.
         Если precision 0,  дробная часть и десятичная точка
         не печатаются.
      g,G
         Аргумент типа double  печатается c помощью  формата
         'f' или 'e'  (или 'E',  если  задан  'G'  формат) в
         зависимости от величины аргумента. 'e' используется,
         если  экспонента <  3  или  экспонента > precision.
         Precision задает количество значащих  цифр; умолча-
         ние  равно 6.  Десятичная  точка  появляется,  если
         предшествует цифре. Замыкающие 0 опускаются.
      n
         Аргумент  является  указателем на целое,  в которое
         записывается количество цифр,  напечатанных к этому
         моменту. Никакие литеры не печатаются и не преобра-
         зуются.
      p
         Аргумент  является  указателем,  значение  которого
         (адрес) печатается в виде  segment:offset для даль-
         него указателя  или в виде XXXX для ближнего указа-
         теля.
      s
       Аргумент является указателем на строку.  Литеры печа-
       таются до замыкающего 0, или до исчерпания литер, ко-
       личество которых задано precision. Умолчание precision
       равно 32767. Замыкающий 0 не печатается.
    %
       Печатается литера '%'.

Использование

#include 
      int fprintf(FILE *fp,char *format,...);     /* ANSI */
      int printf(char *format,...);               /* ANSI */
      int sprintf(char *buffer,char *format,...); /* ANSI */

Возвращаемое значение

Возвращает количество  напечатанных  литер.  Если име-
      ла место ошибка, возвращаемое значение отрицательно.

Пример

#include 
      #include 
      main()
      {
        char * msg="Целыми форматами являются:";
        int number=10;
        double num=345.2356;
        printf("%s Hex: 0%x, Decimal:%d, Octal: %o\n",
                         msg, number, number, number);
        printf("\n Точность плавающей точки
                 для PI: %.2f, %.4f, %.8f\n", PI,PI,PI);
        printf("\n %.4f Экспоненциальный формат : %E\n",
                                                   num,num);
      }
link

Комментариев нет:

Отправить комментарий