Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

printf

[ Оглавление ]
               PRINTF
            
            #include <stdio.h>
                                                                  
            int printf (format-string [, argument...]);
            char *format-string;       строка управления форматом.
            
                                                                  

               Описание.
         
               Функция  printf  форматирует  и  печатает наборы символов и
         значений в выходной стандартный поток stdout. Строка формата сос-
         тоит из обычных символов, escape-последовательностей и,  если  за
         строкой формата следуют аргументы,    еще и спецификации формата.
         Обычные  символы  и escape-последовательности просто копируются в
         stdout в порядке их появления.
                
                Например, строка
            
            printf ("Line one\n\t\tLine two\n");

         выработает на выводе
            
            Line one
                            Line two.
               Более подробно escape-последовательности описываются в гла-
         ве 2.2.4 руководства MSC Compiler Language Reference.
            
               Если за строкой формата следуют аргументы arguments, то эта
         строка также должна содержать спецификации формата,  определяющие
         формат  вывода этих аргументов. Спецификация формата всегда начи-
         нается с символа знака процента (%). Ниже о нем описывается  под-
         робнее.
               Строка  формата  читается  слева направо. Когда встречается
         первая спецификация формата (если она есть), то значение  первого
         аргумента после строки формата преобразовывается и выводится сог-
         ласно заданной спецификации. Вторая спецификация формата вызывает
         преобразование  и  вывод  второго аргумента и так далее, до конца
         строки формата. Если аргументов больше, чем спецификаций формата,
         то эти дополнительные аргументы игнорируются. Результат  является
         неопределенным,  если аргументов недостаточно для всех специфика-
         ций формата.
               Спецификация формата имеет следующую форму:
            
            %х[flags][wigth][.precision][{F:N:h:I}]type.
            
               Каждое поле в спецификации формата является отдельным  сим-
         волом  или  числом,  выражающим  отдельную  опцию формата. Символ
         type, появляющийся после последнего необязательного поля формата,
         определяет аргумент как символ,  строку  или  число.  (См.  табл.
         R.1.).
               Простейшая  спецификация  формата  содержит  только символ
         знака  процента  и  символ  типа  (например, %S).  Необязательные
         поля  управляют другими аспектами форматирования, как описывается
         ниже.
                                                           
            ПОЛЕ                      ОПИСАНИЕ
            
            flags          Включение   вывода  и  печати   знаков,
                           пробелов,       десятичных       точек,
                           восьмеричных     и    шестнадцатеричных
                           префиксов. (См. табл. R.2.).
                           
            width          Минимальное число выводимых символов.
                           
         
            precision      Максимальное число символов, печатаемых
                           на  всем  или  части  поля  вывода; или
                           минимальное  число   цифр   для  печати
                           целых значений. (См. табл. R.3.).
                           
            F, N           Префиксы, позволяющие пользователю over-
                           ride,  по умолчанию,  адресацию соглаше-
                           ний моделей памяти.
                           
            F              Используется для малой модели для печати
                           значения, объявленного far.
                                     
            N              Используется   для   средней, большой  и
                           huge-моделей  для near-значений.
                           
                           F  и N могут быть использованы только с
                           типами символов s и  p,  поскольку  они
                           уместны     только    с    аргументами,
                           представляющими указатель.
                           
            h, l           Предполагаемый размер аргумента:
                           
                           h используется в  качестве  префикса  с
                           целыми   типами  d,  i,  o,  x,  X  для
                           определения,  что   аргумент   является
                           short int.
                           
                           l  используется  в  качестве префикса с
                           типами d, i, o, x, X  для  обозначения,
                           что  аргумент является long int. Символ
                           l  используется  также  как  префикс  с
                           типами  e,  E, f, g, G для определения,
                           что  аргумент  является  скорее double,
                           чем float.
            
               Если за символом знака  процента  (%)  следует  символ,  не
         обозначающий  тип  формата,  то  этот  символ  копируется в поток
         stdout. Например, для печати символа знака процента  используется
         комбинация %%.
           
           
                                                      Таблица R.1.
               
                          Типы символов функции printf
         
               
            СИМВОЛ    ТИП АРГУМЕНТА          ФОРМАТ ВЫВОДА
            
              d         целый           целочисленный   десятичный
                                        знаковый
            
              i         целый           целочисленный   десятичный
                                        знаковый
            
              u         целый           беззнаковый  целочисленный
         
                                        десятичный
            
              o         целый           беззнаковый   восьмеричный
                                        целый
            
              x         целый           беззнаковый   шестнадцате-
                                        ричный целый, использующий
                                        "abcdef"
            
              X         целый           беззнаковый   шестнадцате-
                                        ричный целый, использующий
                                        "ABCDEF".
            
              f       с  плавающей      знаковое значение, имеющее
                      точкой            форму  [-]dddd.dddd,   где
                                        dddd  -  одна   или  более
                                        десятичных  цифр.    Коли-
                                        чество      цифр     перед
                                        десятичной точкой  зависит
                                        от   величины   числа,   а
                                        количество   цифр    после
                                        десятичной  точки  зависит
                                        от требуемой точности.
            
             e        с плавающей       знаковое значение, имеющее
                      точкой            форму [-]d.dddde[sign]ddd,
                                        где  d - десятичная цифра,
                                        dddd  -  одна  или   более
                                        десятичныхя  цифр,  ddd  -
                                        ровно    три    десятичных
                                        цифры,  и sign - либо "+",
                                        либо "-".
            
             E        с плавающей       идентично формату "e",  за
                      точкой            исключением   того,    что
                                        вместо "e" вводится "E".
            
             g        с плавающей       знаковое значение, распеча-
                      точкой            тываемое в формате "f" или
                                        "e",  и  являющееся  более
                                        компактным  для  выбранных
                                        значения  и точности  (как
                                        показано ниже). Формат "e"
                                        используется, только когда
                                        значение экспоненты меньше
                                        -4    или    больше,   чем
                                        precision.  Ведущие   нули
                                        отсекаются,  и  десятичная
                                        точка  появляется   тогда,
                                        когда  за ней следует одна
                                        или несколько цифр.
            
             G       с плавающей        идентично  формату "g", за
                     точкой             исключением    того,   что
                                        вместо     "e"    вводится
         
                                        экспонента "E"  (если  она
                                        необходима).
            
             c       символьный         отдельный символ.
            
             s       строковый          символы    печатаются   до
                                        первого  нулевого  символа
                                        '\o'   или  до  достижения
                                        precision.
            
             n       указатель на       число   символов   успешно
                     целый              записывается   в     поток
                                        stream;    это    значение
                                        хранится  в  целом,  адрес
                                        которого   выбирается  как
                                        аргумент.

             p       far-указатель      печать адреса, указываемо-
                                        го аргументом,  в    форме
                                        xxxx:yyyy,    где     xxxx
                                        является  сегментом,  yyyy
                                        является разветвлением,  а
                                        цифры   x   и  y  являются
                                        шестнадцатеричными цифрами
                                        верхнего  регистра (upper-
                                        case). %Np печатает только
                                        адрес  разветвления  yyyy.
                                        Поскольку  %p предполагает
                                        указатель на far-значение,
                                        аргументы      p-указателя
                                        могут быть сброшены к  far
                                        в    маленьких     моделях
                                        программ.
               
               
            
                                                      Таблица R.2.
               
                          Символы flags функции printf
            
            FLAG(*)        ЗНАЧЕНИЕ                  ПО УМОЛЧАНИЮ
            
              -      Смещение результата влево    Смещение  вправо
                     внутри поля wigth
            
           
              +      Присоединение   знака   к    Знак  "-"  появ-
                     выводимому значению, если    ляется    только
                     оно имеет знаковый тип       для  отрицатель-
                                                  ных     знаковых
                                                  значений
                                                  
            blank    К выводимому значению при-   Без пробела
            (' ')    соединяется ' ', если  вы-
                     водимое значение  является
         
                     знаковым и  положительным;
                     флаг  "+"  override   флаг
                     blank,  если  оба  есть, и
                     положительное     знаковое
                     значение выводится  вместе
                     со знаком
                     
            #        При использовании с форма-   Без префикса
                     тами o, x, X,  флаг # при-
                     соединяет к любому ненуле-
                     вому  выводимому значению,
                     соответственно, 0, 0х, 0Х
                     
                     Когда флаг #  используется   Десятичная точ-
                     в  формате  e,  E,  f,  он   ка   появляется
                     определяет   наличие деся-   только   тогда,
                     тичной  точки в  выводимом   когда   за  ней
                     значении                     идут цифры
                     
                     Когда флаг #  используется   Десятичная точ-
                     в формате g, G, он опреде-   ка   появляется
                     ляет  наличие   десятичной   только   тогда,
                     точки в выводимом значении   когда   за  ней
                     и  препятствует  отсечению   идут цифры
                     ведущих нулей                Ведущие    нули
                                                  отсекаются
                                                  
                     Флаг  # игнорируется,  при
                     его использовании в форма-
                     тах c, d, i, u, s
                     
               Примечание. В формате спецификации может содержаться более,
         чем один flag.

               Width  -  неотрицательное  десятичное целое, контролирующее
         минимальное число напечатанных символов. Если  число  символов  в
         значении  вывода  меньше, чем в width, слева и справа добавляются
         пробелы (в зависимости от того, где определен флаг "-"), пока ми-
         нимальная ширина не будет достигнута. Если к width присоединяется
         0, то 0 будут добавляться до тех пор, пока не будет достигнут ми-
         нимум width. (Это не применяется для чисел, смещенных влево).
               Спецификация width не требует отсечения значения; если чис-
         ло символов выводимого значения больше  чем определено  в  width,
         или  не задано в нем, все значения символов распечатываются (под-
         лежат спецификации precision).
               В спецификации width может быть звездочка (*), когда вместо
         значения подставляется соответствующий ему аргумент из списка ар-
         гументов. Аргумент width должен предшедствовать  соответствующему
         значению.
               Спецификация  precision является неотрицательным десятичным
         целым, которому предшедствует точка (.), определяющая  количество
         печатаемых символов  или же число десятичных мест.
               В  отличии  от  спецификации  width, спецификация precision
         требует отсечения выводимого значения или, в  случае  значения  с
         плавающей  точкой, его округления. В случае подстановки аргумента
         
         из списка аргументов  в спецификации precision может  быть  звез-
         дочка  (*).  В списке аргументов аргумент precision предшедствует
         форматируемому значению. Объяснение значений precision, в зависи-
         мости от типа type  и случая, когда precision  пропущено,  предс-
         тавлено в таблице R.3.
               
                                                      Таблица R.3.
               
               Как тип type влияет на значение precision в функции printf
         
               
            ТИП             ЗНАЧЕНИЕ                ПО УМОЛЧАНИЮ

             d     Precision         определяет   Если   precision
             i     минимальное число печатаемых   равна 0 или про-
             u     цифр.  Если  число  цифр   в   пущена, или если
             o     аргументе     меньше,    чем   появляется точка
             x     размер   precision,    слева   (.)  без  идущих
             X     перед   выводимым  значением   за ней цифр,  то
                   добавляются нули. Если число   precision  уста-
                   цифр  не  превосходит размер   навливается рав-
                   precision,    значение    не   ной 1
                   отсекается
                                                  
             e     Precision  определяет  число   Precision     по
             E     цифр,    печатаемых    после   умолчанию  равна
             f     десятичной  точки. Последняя   6; если она рав-
                   печатаемая цифра округляется   на  0  или перед
                                                  ней   появляется
                                                  точка   (.)  без
                                                  следуемых за ней
                                                  цифр,      тогда
                                                  десятичная точка
                                                  не печатается
                                                  
             g     Precision         определяет   Печатаются   все
             G     максимальное   число  важных   важные   (много-
                   (многозначных)    печатаемых   значные) цифры
                   символов
                   
             c     Не    происходит    никакого   Печать символа
                   действия
            
             s     Precision определяет макси-    Печать символов,
                   мальное число печатаемых       пока  не  встре-
                   символов                       тится    нулевой
                   Символы,  превышающие размер   символ
                   precision, не печатаются
            
            
               Возвращаемое значение.
            
               Эта функция возвращает количество напечатанных символов.
               См.  также  fprintf,  scanf,  sprintf,  vfprintf,  vprintf,
         vsprintf.
         
            
               Пример:
            
            main ()
      
         /* форматирование и печать различных данных */
            
            {
            char ch = 'h', *string = "computer";
            int count = 234, *ptr, hex = 0x10, oct = 010, dec = 10;
            double fp = 251.7366;
            
            printf("%d  %+d  %06d  %X  %x  %o\n\n",
                  count, count, count, count, count, count);
            
            printf("1234567890123%n45678901234567890\n\n", &count);
            printf("Value of count should be 13; count = %d\n\n",
                   count);
            
            printf("%10c%5c\n\n", ch, ch);
            
            printf("%25s\n%25.4s\n\n", string, string);
            
            printf("%f  %.2f  %e  %E\n\n", fp, fp, fp, fp);
            
            printf("%i  %i  %i\n\n", hex, oct, dec);
            
            ptr = &count;
            printf("%Np  %p  %Fp\n",
                   ptr, (int far *) ptr, (int far *)ptr);
            }
            
            Тогда на выводе получится следующее:
            
            234  +234  000234   EA  ea  352
            
            123456789012345678901234567890
            
                            
            Value of count should be 13; count = 13;
                h    h
                      computer
                               comp
            
            251.736600    251.74   2.517366e+002   2.517366E+002
            
            16  8  10
            
            127A  1328:127A   1328:127A.
            
            
            PUTC-PUTCHAR

            #include <stdio.h>
                                                                                                       
         
            int putc (c, stream);   записывает символ в поток stream
            int c;                  записываемый символ
            
            FILE *stream;           указатель на структуру FILE
            
            int putchar(c);         записывает символ в <stdout>
            int c;                  записываемый символ
            
            
               Описание.

               Процедура putc записывает отдельный символ  "с"  в  текущую
         позицию выходного потока stream. Процедура putchar идентична про-
         цедуре putc(c, stdout).
            
               Возвращаемое значение.
            
               Эти  обе  процедуры  возвращают записанный символ. В случае
         ошибки  возвращается значение EOF. Так  как  значение  EOF  может
         быть  воспринято  как  целая величина, поэтому для проверки места
         возникновения ошибки применяется функция ferror.
               См. также fputc, fputchar, getc, getchar.
               Замечание: Процедуры  putc  и  putchar  идентичны  fputc  и
         fputchar, но они являются макро, а не функциями.
            
               Пример:
            
            #include <stdio.h>
                                                                 
            FILE *stream;
            char buffer[81];
            int i, ch;
            .
            .
            .
         /* следующий оператор позволяет записать буфер в поток */
            
            for  (i = 0;  (i < 81)  &&  ((ch = putc(buffer[i],
                                               stream)) != EOF) ;)
                     ++i;
            
         /* Замечание: Поскольку  тело  утверждения  пусто,  операция
         записи происходит в выражении проверки. */
            
            
              PUTCH
            
            #include <conio.h>     требуется только для объявления
                                   функции
            
            void putch(c)
            int c;                 выводимый символ
            
            
         
               Описание.
            
               Функция putch записывает символ "c" прямо на консоль.
            
               Возвращаемое значение.
            
               Возвращаемого значения нет.
               См.также cprintf, getch, getche.
            
               Пример:
            
            #include <conio.h>
                                 
          /* в следующем примере показано, как может быть определена функ-
         ция getche посредством использования функций putch и getch.*/
         
            int getche()
            {
                int ch;
            
                ch=getch();
                putch(ch);
                return(ch);
            }
            
            

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог