printf

PRINTF(3)       Ð ÑководÑÑво пÑогÑаммиÑÑа Linux       PRINTF(3)



ÐÐЯ
       printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf,
       vdprintf, vsprintf, vsnprintf - пÑеобÑазование
       ÑоÑмаÑиÑованного вÑвода

ÐÐÐÐÐ
       #include <stdio.h>

       int printf(const char *format, ...);
       int fprintf(FILE *stream, const char *format, ...);
       int dprintf(int fd, const char *format, ...);
       int sprintf(char *str, const char *format, ...);
       int snprintf(char *str, size_t size, const char *format, ...);

       #include <stdarg.h>

       int vprintf(const char *format, va_list ap);
       int vfprintf(FILE *stream, const char *format, va_list ap);
       int vdprintf(int fd, const char *format, va_list ap);
       int vsprintf(char *str, const char *format, va_list ap);
       int vsnprintf(char *str, size_t size, const char *format, va_list ap);

   ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑоÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв Ð´Ð»Ñ glibc
   (Ñм. feature_test_macros(7)):

       snprintf(), vsnprintf():
           _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE ||
               || /* веÑÑии glibc <= 2.19: */ _BSD_SOURCE

       dprintf(), vdprintf():
           ÐаÑÐ¸Ð½Ð°Ñ Ñ glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Ðо glibc 2.10:
               _GNU_SOURCE

ÐÐÐСÐÐÐÐ
       ФÑнкÑии ÑемейÑÑва printf() вÑводÑÑ Ð´Ð°Ð½Ð½Ñе в
       ÑооÑвеÑÑÑвии Ñ Ð¿Ð°ÑамеÑÑом format, опиÑаннÑм
       ниже. ФÑнкÑии printf() и vprintf() напÑавлÑÑÑ
       даннÑе в ÑÑандаÑÑнÑй поÑок вÑвода stdout;
       ÑÑнкÑии fprintf() и vfprintf() напÑавлÑÑÑ Ð´Ð°Ð½Ð½Ñе в
       заданнÑй поÑок вÑвода stream; ÑÑнкÑии sprintf(),
       snprintf(), vsprintf() и vsnprintf() напÑавлÑÑÑ Ð´Ð°Ð½Ð½Ñе в
       ÑимволÑнÑÑ ÑÑÑÐ¾ÐºÑ str.

       ФÑнкÑÐ¸Ñ dprintf() подобна fprintf(3) за
       иÑклÑÑением Ñого, ÑÑо вÑÐ²Ð¾Ð´Ð¸Ñ Ð´Ð°Ð½Ð½Ñе в
       ÑайловÑй деÑкÑипÑÐ¾Ñ fd, а не в поÑок stdio.

       ФÑнкÑии snprintf() и vsnprintf() запиÑÑваÑÑ Ð½Ðµ более
       size Ð±Ð°Ð¹Ñ (вклÑÑÐ°Ñ ÐºÐ¾Ð½ÐµÑнÑй Ð±Ð°Ð¹Ñ null ('\0')) в str.

       ФÑнкÑии vprintf(), vfprintf(), vdprintf(), vsprintf(), vsnprintf()
       ÑквиваленÑÐ½Ñ printf(), fprintf(), dprintf(), sprintf(),
       snprintf(), ÑооÑвеÑÑÑвенно, за иÑклÑÑением Ñого,
       ÑÑо они вÑзÑваÑÑÑÑ Ñ va_list, а не пеÑеменнÑм
       ÑиÑлом аÑгÑменÑов. ÐÑи ÑÑнкÑии не вÑзÑваÑÑ
       макÑÐ¾Ñ va_end. Так как они вÑзÑваÑÑ Ð¼Ð°ÐºÑÐ¾Ñ va_arg,
       знаÑение ap не опÑеделено поÑле вÑзова.
       СмоÑÑиÑе stdarg(3).

       ÐÑе ÑÑи ÑÑнкÑии вÑводÑÑ Ð´Ð°Ð½Ð½Ñе в ÑооÑвеÑÑÑвии
       Ñо ÑÑÑокой format, коÑоÑÐ°Ñ Ð¾Ð¿ÑеделÑеÑ, каким
       обÑазом поÑледÑÑÑие паÑамеÑÑÑ (или доÑÑÑпнÑе
       паÑамеÑÑÑ Ð¿ÐµÑеменной Ð´Ð»Ð¸Ð½Ñ Ð¸Ð· stdarg(3))
       пÑеобÑазÑÑÑ Ð¿Ð¾Ñок вÑвода.

       Ð C99 и POSIX.1-2001 Ñказано, ÑÑо ÑезÑлÑÑÐ°Ñ Ð½Ðµ
       опÑеделÑн, еÑли вÑзов sprintf(), snprintf(), vsprintf()
       или vsnprintf() пÑивÑл Ð±Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ
       пеÑекÑÑваÑÑимиÑÑ Ð¾Ð±ÑекÑами (напÑимеÑ, еÑли
       маÑÑив ÑÑÑок назнаÑÐµÐ½Ð¸Ñ Ð¸ один из ÑказаннÑÑ
       вÑоднÑÑ Ð°ÑгÑменÑов ÑÑÑлаÑÑÑÑ Ð½Ð° один бÑÑеÑ).
       СмоÑÑиÑе ÐÐÐÐЧÐÐÐЯ.

   СÑÑÑкÑÑÑа ÑÑÑоки паÑамеÑÑов
       СÑÑока паÑамеÑÑов â ÑÑо ÑÑÑока Ñимволов,
       наÑинаÑÑаÑÑÑ Ð¸ заканÑиваÑÑаÑÑÑ Ð² ÑвоÑм
       наÑалÑном ÑоÑÑоÑнии Ñдвига, еÑли оно еÑÑÑ.
       СÑÑока Ð¼Ð¾Ð¶ÐµÑ ÑоÑÑоÑÑÑ Ð¸Ð· нÑÐ»Ñ Ð¸Ð»Ð¸ более
       диÑекÑив: обÑÑнÑÑ Ñимволов (кÑоме %), коÑоÑÑе
       неизменно копиÑÑÑÑÑÑ Ð² поÑок вÑÑода; и
       ÑпеÑиÑикаÑоÑов пÑеобÑазованиÑ, по каждомÑ
       из коÑоÑÑÑ Ð²ÑбиÑаеÑÑÑ Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более
       поÑледÑÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов. ÐаждÑй ÑпеÑиÑикаÑоÑ
       пÑеобÑазований наÑинаеÑÑÑ Ñ Ñимвола % и
       заканÑиваеÑÑÑ ÑпеÑиÑикаÑоÑом
       пÑеобÑазованиÑ. ÐÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ могÑÑ Ð½Ð°ÑодиÑÑÑÑ
       (в опÑеделÑнном поÑÑдке) Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более
       Ñлагов, необÑзаÑелÑÐ½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑÐ½Ð°Ñ ÑиÑина
       полÑ,  необÑзаÑелÑÐ½Ð°Ñ ÑоÑноÑÑÑ Ð¸

       ÐаÑамеÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоÑно ÑооÑвеÑÑÑвоваÑÑ (поÑле
       пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипа) ÑпеÑиÑикаÑоÑам
       пÑеобÑазований. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ
       иÑполÑзÑÑÑÑÑ Ð² поÑÑдке поÑÑÑплениÑ, где
       ÐºÐ°Ð¶Ð´Ð°Ñ Â«*» (ÑмоÑÑиÑе ШиÑина Ð¿Ð¾Ð»Ñ Ð¸ ТоÑноÑÑÑ
       ниже) и каждÑй ÑпеÑиÑикаÑÐ¾Ñ Ð¿ÑеобÑазованиÑ
       ÑÑебÑÑÑ Ð¿Ð¾ÑледÑÑÑего паÑамеÑÑа (еÑли Ñказано
       недоÑÑаÑоÑно паÑамеÑÑов, Ñо ÑÑо пÑиведÑÑ Ðº
       оÑибке). Ðозможно Ñвное Ñказание на Ñо,
       какой паÑамеÑÑ Ð±ÑÐ´ÐµÑ ÑледÑÑÑим, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
       запиÑи «%m$» вмеÑÑо «%» и «*m$» вмеÑÑо «*Ñ, где
       деÑÑÑиÑÐ½Ð°Ñ ÑиÑÑа m ознаÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð½Ñжного
       паÑамеÑÑа в Ð¸Ñ ÑпиÑке; ÑпиÑок наÑинаеÑÑÑ Ñ
       единиÑÑ. Таким обÑазом,

           printf("%*d", width, num);

       и

           printf("%2$*1$d", width, num);

       ознаÑаÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же. ÐÑоÑÐ°Ñ ÑоÑма запиÑи
       позволÑÐµÑ Ð¿ÑоизводиÑÑ Ñказание на ÑÐ¾Ñ Ð¶Ðµ
       паÑамеÑÑ Ð½ÐµÑколÑко Ñаз. СÑандаÑÑ C99 не
       поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸ÑполÑзование «$», коÑоÑÑй
       пÑиÑÑл из Single UNIX Specification. ÐÑли иÑполÑзÑеÑÑÑ
       «$», Ñо он должен иÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð²ÑеÑ
       пÑеобÑазований аÑгÑменÑов и во вÑеÑ
       аÑгÑменÑÐ°Ñ ÑиÑÐ¸Ð½Ñ Ð¸ ÑоÑноÑÑи, но он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
       ÑмеÑан Ñ ÑоÑмаÑами «%%», коÑоÑÑе не поглоÑаÑÑ
       аÑгÑменÑÑ. Там Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ бÑÑÑ Ð¿Ñобелов междÑ
       ÑиÑлами аÑгÑменÑов, обÑÑловленнÑе
       иÑполÑзованием «$». ÐапÑимеÑ, еÑли аÑгÑменÑÑ
       1 и 3 опÑеделенÑ, Ñо аÑгÑÐ¼ÐµÐ½Ñ 2 должен Ñакже
       бÑÑÑ Ð¾Ð¿ÑеделÑн где-Ñо в ÑÑÑоке паÑамеÑÑов.

       РнекоÑоÑÑÑ ÑиÑÑовÑÑ Ð¿ÑеобÑазованиÑÑ
       иÑполÑзÑеÑÑÑ Ñимвол ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñелой и
       дÑобной ÑаÑÑей или Ñимвол ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑÑÑÑ.
       ТекÑÑий Ñимвол завиÑÐ¸Ñ Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸, а именно
       Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной LC_NUMERIC. Рлокали POSIX
       по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ñимвол «.» и не
       оÑÑÑÑÑÑвÑÐµÑ Ñимвол ÑазделениÑ. Таким
       обÑазом,

               printf("%'.2f", 1234567.89);

       вÑÐ²Ð¾Ð´Ð¸Ñ Â«1234567.89» пÑи локали POSIX, «1234567,89»
       пÑи локали nl_NL и «1.234.567,89» пÑи локали da_DK.

   Флаги
       Ðа Ñимволом % Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказано Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸
       неÑколÑко ÑледÑÑÑÐ¸Ñ Ñлагов:

       #      ÐнаÑение пÑеобÑазÑеÑÑÑ Ð² «алÑÑеÑнаÑивнÑÑ
              ÑоÑмÑ». ÐÐ»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипа o пеÑвÑй
              Ñимвол вÑÑодного поÑока бÑÐ´ÐµÑ Ð½ÑлÑ
              (пÑеÑÐ¸ÐºÑ 0, еÑли до ÑÑого его не бÑло
              Ñказано). ÐÐ»Ñ Ð¿ÑеобÑазований Ñипа x и X
              к ненÑÐ»ÐµÐ²Ð¾Ð¼Ñ ÑезÑлÑÑаÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑÑÑ Â«0x»
              (или «0X» Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипа X). ÐÑи
              пÑеобÑазованиÑÑ Ñипа a, A, e, E, f, F, g и G
              ÑезÑлÑÑÐ°Ñ Ð²Ñегда бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð´ÐµÑÑÑиÑнÑÑ
              ÑоÑкÑ, даже еÑли за ней не ÑледÑÐµÑ ÑиÑÑ
              (обÑÑно деÑÑÑиÑÐ½Ð°Ñ ÑоÑка пÑиÑÑÑÑÑвÑÐµÑ Ð²
              ÑезÑлÑÑаÑе ÑÐ°ÐºÐ¸Ñ Ð¿ÑеобÑазований ÑолÑко,
              еÑли за ними ÑледÑÑÑ ÑиÑÑÑ). ÐлÑ
              пÑеобÑазований g и G завеÑÑаÑÑие нÑли
              не ÑдалÑÑÑÑÑ Ð¸Ð· ÑезÑлÑÑаÑа, как ÑÑо обÑÑно
              ÑлÑÑаеÑÑÑ. РезÑлÑÑÐ°Ñ Ð´Ð»Ñ Ð´ÑÑгиÑ
              пÑеобÑазований не опÑеделÑн.

       0      РзнаÑение добавлÑÑÑÑÑ Ð½Ñли. ÐÑи
              пÑеобÑазованиÑÑ Ñипа d, i, o, u, x, X, a, A, e, E,
              f, F, g и G пÑеобÑазÑемое знаÑение Ñлева
              дополнÑеÑÑÑ Ð½ÑлÑми (вмеÑÑо пÑобелов).
              ÐÑли пÑиÑÑÑÑÑвÑÑÑ Ñлаги 0 и -, Ñо Ñлаг 0
              игноÑиÑÑеÑÑÑ. ÐÑли в ÑиÑловом
              пÑеобÑазовании Ñказана ÑоÑноÑÑÑ (d, i, o,
              u, x, и X), Ñо Ñлаг 0 игноÑиÑÑеÑÑÑ. Ðоведение
              Ñлага пÑи дÑÑÐ³Ð¸Ñ Ð¿ÑеобÑазованиÑÑ Ð½Ðµ
              опÑеделено.

       -      ÐÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ ÑезÑлÑÑÐ°Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾
              левой гÑаниÑе Ð¿Ð¾Ð»Ñ (по ÑмолÑаниÑ
              вÑÑавнивание вÑполнÑеÑÑÑ ÑпÑава).
              ÐÑеобÑазованное знаÑение дополнÑеÑÑÑ
              ÑпÑава пÑобелами, а не пÑобелами или
              нÑлÑми Ñлева. Флаг - оÑменÑÐµÑ Ñлаг «0»,
              еÑли бÑло Ñказано оба Ñлага.

       ' '    (пÑобел). УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ñлева пеÑед
              положиÑелÑнÑми ÑиÑлами (или пÑÑÑой
              ÑÑÑокой) знак пÑобела пÑи знаковÑÑ
              пÑеобÑазованиÑÑ.

       +      Ðнак + или - вÑегда помеÑаеÑÑÑ Ð¿ÐµÑед
              пÑеобÑазованнÑм ÑиÑлом Ñо знаком. Ðо
              ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ðº иÑполÑзÑеÑÑÑ ÑолÑко длÑ
              оÑÑиÑаÑелÑнÑÑ ÑиÑел. Флаг + оÑменÑеÑ
              дейÑÑвие пÑобела, еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð¾Ð±Ð°
              Ñлага.

       ÐÑÑÑ Ñлагов, опиÑаннÑÑ Ð²ÑÑе, опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð²
       ÑÑандаÑÑе C99. Ð ÑÑандаÑÑе Single UNIX Specification
       опÑеделÑн еÑÑ Ð¾Ð´Ð¸Ð½ дополниÑелÑнÑй Ñлаг.

       '      ÐÑи деÑÑÑиÑнÑÑ Ð¿ÑеобÑазованиÑÑ (i, d, u, f, F,
              g, G) ÑезÑлÑÑÐ°Ñ Ð³ÑÑппиÑÑеÑÑÑ Ñимволом
              ÑазделиÑÐµÐ»Ñ ÑÑÑÑÑ, еÑли инÑоÑмаÑиÑ
              локализаÑии ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑо. ÐамеÑим,
              ÑÑо многие веÑÑии gcc(1) не могÑÑ
              ÑаÑпознаÑÑ ÑÑÐ¾Ñ Ñлаг и вÑводÑÑ
              ÑооÑвеÑÑÑвÑÑÑее пÑедÑпÑеждение (SUSv2 не
              ÑодеÑжи %'F, но в SUSv3 его добавили).

       Ð glibc 2.2 добавлен еÑÑ Ð¾Ð´Ð¸Ð½ Ñлаг.

       I      ÐÑи пÑеобÑазовании ÑелÑÑ Ð´ÐµÑÑÑиÑнÑÑ ÑиÑел
              (i, d, u) в ÑезÑлÑÑаÑе иÑполÑзÑеÑÑÑ
              алÑÑеÑнаÑивное пÑедÑÑавление ÑиÑÑ
              ÑоглаÑно локали. ÐапÑимеÑ, наÑÐ¸Ð½Ð°Ñ Ñ glibc
              2.2.3 ÑÑо даÑÑ Ð°ÑабÑко-индийÑкие ÑиÑÑÑ Ð´Ð»Ñ
              пеÑÑидÑкой локали («fa_IR»).

   ШиÑина полÑ
       ÐеобÑзаÑелÑÐ½Ð°Ñ ÑÑÑока из деÑÑÑиÑнÑÑ ÑиÑÑ (Ñ
       пеÑвой ÑиÑÑой, оÑлиÑной Ð¾Ñ Ð½ÑлÑ) опÑеделÑеÑ
       минималÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¿Ð¾Ð»Ñ. ÐÑли
       пÑеобÑазованное знаÑение Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÐ½ÑÑее
       колиÑеÑÑво знаков, Ñем ÑиÑина полÑ, Ñо оно
       Ñлева дополнÑеÑÑÑ Ð¿Ñобелами (или ÑпÑава,
       еÑли Ñказан Ñлаг вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ левомÑ
       кÑаÑ). ÐмеÑÑо ÑÑÑоки деÑÑÑиÑнÑÑ ÑиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾
       ÑказаÑÑ Â«*» или «*m$» (Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑого
       деÑÑÑиÑного ÑиÑла m), ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ ÑиÑинÑ
       Ð¿Ð¾Ð»Ñ Ð¿Ð¾ ÑиÑине ÑледÑÑÑего аÑгÑменÑа или
       аÑгÑменÑа Ñ Ð½Ð¾Ð¼ÐµÑом m (должен бÑÑÑ Ñипа int),
       ÑооÑвеÑÑÑвенно. ÐÑÑиÑаÑелÑÐ½Ð°Ñ ÑиÑина полÑ
       пÑинимаеÑÑÑ ÐºÐ°Ðº Ñлаг «-», ÑÑÑанавливаÑÑий
       положиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¿Ð¾Ð»Ñ. ÐеÑÑÑеÑÑвÑÑÑÐ°Ñ Ð¸Ð»Ð¸
       неболÑÑÐ°Ñ ÑиÑина Ð¿Ð¾Ð»Ñ Ð½Ðµ Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾
       ÑÑеÑÑннÑм; еÑли ÑезÑлÑÑÐ°Ñ Ð¿ÑеобÑазованиÑ
       болÑÑе ÑиÑÐ¸Ð½Ñ Ð¿Ð¾Ð»Ñ, Ñо поле ÑаÑÑиÑÑеÑÑÑ, ÑÑобÑ
       вмеÑÑиÑÑ Ð² ÑÐµÐ±Ñ Ð¿ÑеобÑазованное знаÑение.

   ТоÑноÑÑÑ
       ÐеобÑзаÑелÑнÑй паÑамеÑÑ ÑоÑноÑÑи в виде
       знака ÑоÑки («.») ÑопÑовождаеÑÑÑ
       необÑзаÑелÑной ÑÑÑокой деÑÑÑиÑнÑÑ ÑиÑÑ. ÐмеÑÑо
       ÑÑÑоки деÑÑÑиÑнÑÑ ÑиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑказаÑÑ Â«*» или
       «*m$» (Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑого деÑÑÑиÑного ÑиÑла m),
       ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð·Ð½Ð°Ñение ÑоÑноÑÑи по
       ÑледÑÑÑÐµÐ¼Ñ Ð°ÑгÑменÑÑ Ð¸Ð»Ð¸ аÑгÑменÑÑ Ñ Ð½Ð¾Ð¼ÐµÑом m
       (должен бÑÑÑ Ñипа int), ÑооÑвеÑÑÑвенно. ÐÑли
       ÑоÑноÑÑÑ Ñказана как «.», Ñо она
       обÑабаÑÑваеÑÑÑ ÐºÐ°Ðº нÑлеваÑ. ÐÑÑиÑаÑелÑнаÑ
       ÑоÑноÑÑÑ Ð¾Ð±ÑабаÑÑваеÑÑÑ ÐºÐ°Ðº еÑли не
       ÑказÑвалаÑÑ ÑовÑем. ÐÑо позволÑеÑ
       огÑаниÑиваÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво вÑводимÑÑ Ñимволов
       Ð´Ð»Ñ Ð¿ÑеобÑазований d, i, o, u, x и X; показÑваÑÑ
       опÑеделÑнное колиÑеÑÑво ÑиÑÑ Ð¿Ð¾Ñле
       деÑÑÑиÑной ÑоÑки Ð´Ð»Ñ Ð¿ÑеобÑазований a, A, e, E,
       f и F; показÑваÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво
       знаÑаÑÐ¸Ñ ÑиÑÑ Ð´Ð»Ñ Ð¿ÑеобÑазований g и G или
       макÑималÑное колиÑеÑÑво Ñимволов длÑ
       пеÑаÑи ÑÑÑок пÑи пÑеобÑазованиÑÑ s и S.

   ÐодиÑикаÑÐ¾Ñ Ð´Ð»Ð¸Ð½Ñ
       УÑÑанавливаÑÑÑÑ Ð´Ð»Ñ ÑледÑÑÑиÑ
       «пÑеобÑазований Ñелого» d, i, o, u, x или X.

       hh     ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам signed char или
              unsigned char, а Ñакже Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n
              ÑооÑвеÑÑÑвÑÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ signed
              char.

       h      ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам short int или unsigned
              short int, а Ñакже Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n
              ÑооÑвеÑÑÑвÑÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ short
              int.

       l      (ÑлÑ) ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам  long int или unsigned
              long int; Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n ÑооÑвеÑÑÑвÑеÑ
              ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ long int; Ñип
              пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ c ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑÑ
              wint_t; Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ s ÑооÑвеÑÑÑвÑеÑ
              ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ wchar_t.

       ll     (ÑлÑ-ÑлÑ) ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам long long int или
              unsigned long long int, а Ñакже Ñип
              пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n ÑооÑвеÑÑÑвÑÐµÑ ÑказаÑелÑ
              на аÑгÑÐ¼ÐµÐ½Ñ long long int.

       L      Ð¢Ð¸Ð¿Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ a, A, e, E, f, F, g или G
              ÑооÑвеÑÑÑвÑÑÑ Ð°ÑгÑменÑÑ long double (в C99
              допÑÑкаеÑÑÑ %LF, но в SUSv2 неÑ). ЯвлÑеÑÑÑ
              Ñинонимом ll.

       j      ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам intmax_t или uintmax_t,
              а Ñакже Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n
              ÑооÑвеÑÑÑвÑÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ intmax_t.

       z      ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам size_t или ssize_t, а
              Ñакже Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n ÑооÑвеÑÑÑвÑеÑ
              ÑказаÑÐµÐ»Ñ Ð½Ð° аÑгÑÐ¼ÐµÐ½Ñ size_t.

       t      ÐÑеобÑазование Ñелого ÑиÑла
              ÑооÑвеÑÑÑвÑÐµÑ Ð°ÑгÑменÑам ptrdiff_t или Ñип
              пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ n ÑооÑвеÑÑÑвÑÐµÑ ÑказаÑелÑ
              на аÑгÑÐ¼ÐµÐ½Ñ ptrdiff_t.

       Ð SUSv3 опÑеделено вÑÑ Ð²ÑÑепеÑеÑиÑленное. Ð SUSv2
       опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑолÑко модиÑикаÑоÑÑ Ð´Ð»Ð¸Ð½Ñ h (в hd,
       hi, ho, hx, hX, hn) и l (в ld, li, lo, lx, lX, ln, lc, ls) и L (в
       Le, LE, Lf, Lg, LG).

   Тип пÑеобÑазованиÑ
       СимволÑ, коÑоÑÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÐºÐ°Ðº ÑипÑ
       пÑеобÑазованиÑ. Ð¢Ð¸Ð¿Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ иÑ
       знаÑениÑ:

       d, i   ÐаÑамеÑÑ int пÑеобÑазÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² иÑ
              знаковое деÑÑÑиÑное оÑобÑажение.
              ТоÑноÑÑÑ (еÑли Ñказана) задаÑÑ
              минималÑное колиÑеÑÑво ÑиÑÑ Ð²
              изобÑажении ÑезÑлÑÑаÑа; еÑли ÑезÑлÑÑаÑ
              можно показаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÐ½ÑÑего
              колиÑеÑÑва ÑиÑÑ, Ñо Ñлева добавлÑÑÑÑÑ
              незнаÑаÑие нÑли. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение
              ÑоÑноÑÑи Ñавно единиÑе. ÐÑи вÑводе нÑÐ»Ñ Ñ
              нÑлевой ÑоÑноÑÑÑÑ Ð²ÑÑодной поÑок бÑдеÑ
              пÑÑÑ.

       o, u, x, X
              ÐаÑамеÑÑ unsigned int  пÑеобÑазÑеÑÑÑ Ð²
              беззнаковое воÑÑмеÑиÑное ÑиÑло (o),
              беззнаковое деÑÑÑиÑное (u) или
              беззнаковое ÑеÑÑнадÑаÑеÑиÑное (x и X).
              ÐÑÐºÐ²Ñ abcdef иÑполÑзÑÑÑÑÑ Ð² пÑеобÑазованиÑÑ
              x; бÑÐºÐ²Ñ ABCDEF иÑполÑзÑÑÑÑÑ Ð²
              пÑеобÑазованиÑÑ X. ТоÑноÑÑÑ (еÑли
              Ñказана) задаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное
              колиÑеÑÑво ÑиÑÑ Ð² изобÑажении
              ÑезÑлÑÑаÑа; еÑли ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ показаÑÑ
              Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÐ½ÑÑего колиÑеÑÑва ÑиÑÑ, Ñо
              Ñлева добавлÑÑÑÑÑ Ð½ÐµÐ·Ð½Ð°ÑаÑие нÑли. Ðо
              ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение ÑоÑноÑÑи Ñавно
              единиÑе. ÐÑи вÑводе нÑÐ»Ñ Ñ Ð½Ñлевой
              ÑоÑноÑÑÑÑ Ð²ÑÑодной поÑок бÑÐ´ÐµÑ Ð¿ÑÑÑ.

       e, E   ÐаÑамеÑÑ double окÑÑглÑеÑÑÑ Ð¸ пÑеобÑазÑеÑÑÑ Ð²
              деÑÑÑиÑное вÑÑажение в виде [-]d.ddde±dd,
              где колиÑеÑÑво ÑиÑÑ Ð¿Ð¾Ñле деÑÑÑиÑной
              ÑоÑки ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑебÑемÑÑ ÑоÑноÑÑÑ. ÐÑли
              ÑоÑноÑÑÑ Ð¾ÑÑÑÑÑÑвÑеÑ, она пÑинимаеÑÑÑ
              Ñавной 6-и; еÑли ÑоÑноÑÑÑ Ñавна нÑлÑ,
              деÑÑÑиÑÐ½Ð°Ñ ÑоÑка не показÑваеÑÑÑ. Ð
              пÑеобÑазовании Ð´Ð»Ñ Ð¿ÑедÑÑавление
              ÑкÑпоненÑÑ E иÑполÑзÑеÑÑÑ Ð±Ñква E (а не e). Ð
              ÑкÑпоненÑе вÑегда не менее двÑÑ ÑиÑÑ;
              еÑли знаÑение нолÑ, Ñо ÑкÑпоненÑа
              вÑводиÑÑÑ ÐºÐ°Ðº 00.

       f, F   ÐаÑамеÑÑ double окÑÑглÑеÑÑÑ Ð¸ пÑеобÑазÑеÑÑÑ Ð²
              деÑÑÑиÑное вÑÑажение в виде [-]ddd.ddd,
              где колиÑеÑÑво ÑиÑÑ Ð¿Ð¾Ñле деÑÑÑиÑной
              ÑоÑки ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑебÑемÑÑ ÑоÑноÑÑÑ. ÐÑли
              ÑоÑноÑÑÑ Ð¾ÑÑÑÑÑÑвÑеÑ, она пÑинимаеÑÑÑ
              Ñавной 6-и; еÑли ÑоÑноÑÑÑ Ñавна нÑлÑ,
              деÑÑÑиÑÐ½Ð°Ñ ÑоÑка не показÑваеÑÑÑ. ÐÑли
              деÑÑÑиÑÐ½Ð°Ñ ÑоÑка еÑÑÑ, пеÑед ней должна
              бÑÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ñм одна ÑиÑÑа

              (в SUSv2 оÑÑÑÑÑÑвÑÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ F и Ñказано,
              ÑÑо ÑÑÐ¾Ñ Ñимвол пÑедназнаÑен длÑ
              оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñимволов беÑконеÑноÑÑи и
              NaN. Ð SUSv3 добавлен Ñип F. Ð ÑÑандаÑÑе C99
              опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Â«[-]inf» или «[-]infinity» длÑ
              ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð±ÐµÑконеÑноÑÑи, и ÑÑÑока
              наÑинаÑÑаÑÑÑ Ñ Â«nan» Ð´Ð»Ñ NaN в ÑлÑÑае, еÑли
              Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñавен f, а
              наÑинаÑÑаÑÑÑ Ñ Â«[-]INF», «[-]INFINITY» или «NAN»
              в ÑлÑÑае, еÑли Ñип пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñавен
              F).

       g, G   ÐаÑамеÑÑ double пÑеобÑазÑеÑÑÑ Ð² ÑÑиле f или e
              (или F или E, Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ G).
              ТоÑноÑÑÑ Ð¾Ð¿ÑеделÑеÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑвом
              знаÑаÑÐ¸Ñ ÑиÑÑ. ÐÑли ÑоÑноÑÑÑ Ð¾ÑÑÑÑÑÑвÑеÑ, Ñо
              она опÑеделÑеÑÑÑ Ñавной 6-и ÑиÑÑам; еÑли
              ÑоÑноÑÑÑ Ñавна нÑлÑ, Ñо она ÑÑакÑÑеÑÑÑ ÐºÐ°Ðº 1.
              СÑÐ¸Ð»Ñ e иÑполÑзÑеÑÑÑ, еÑли ÑкÑпоненÑа
              пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ½ÑÑе -4, или болÑÑе
              или Ñавна ей. ÐавеÑÑаÑÑие нÑли ÑдалÑÑÑÑÑ
              из дÑобной ÑаÑÑи ÑезÑлÑÑаÑа; деÑÑÑиÑнаÑ
              ÑоÑка ÑÑоиÑ, ÑолÑко еÑли за ней ÑледÑеÑ,
              по кÑайней меÑе, одна ÑиÑÑа.

       a, A   (C99; оÑÑÑÑÑÑвÑÐµÑ Ð² SUSv2, до добавлено в SUSv3)
              ÐÐ»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипа a  паÑамеÑÑ double
              оÑобÑажаеÑÑÑ Ð² ÑеÑÑнадÑаÑеÑиÑной ÑоÑме (Ñ
              помоÑÑÑ Ð±Ñкв abcdef) вида [-]0xh.hhhhp±; длÑ
              пÑеобÑазований Ñипа A иÑполÑзÑеÑÑÑ
              пÑеÑÐ¸ÐºÑ 0X,  бÑÐºÐ²Ñ ABCDEF и и ÑазделиÑелÑ
              ÑкÑпоненÑÑ P. ТоÑноÑÑÑ Ñавна
              ÑеÑÑнадÑаÑеÑиÑÐ½Ð¾Ð¼Ñ ÑазÑÑÐ´Ñ Ð¿ÐµÑед
              деÑÑÑиÑной ÑоÑкой и колиÑеÑÑÐ²Ñ ÑиÑÑ Ð¿Ð¾Ñле
              неÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑоÑноÑÑÑ Ð¿ÑинимаеÑÑÑ
              Ñавной ÑоÑÐ½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑазÑÑда, еÑли
              оно ÑооÑвеÑÑÑвÑÐµÑ ÐµÐ¼Ñ Ð¿Ð¾ оÑÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ 2, и в
              пÑоÑивном ÑлÑÑае ÑÐ°Ð·Ð¼ÐµÑ ÐµÑ ÑвлÑеÑÑÑ
              доÑÑаÑоÑнÑм Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑениÑ
              Ñипа double. РазÑÑд пеÑед деÑÑÑиÑной ÑоÑкой
              не опÑеделÑн Ð´Ð»Ñ Ð½ÐµÐ½Ð¾ÑмализованнÑÑ
              ÑиÑел и не Ñавен нÑлÑ, но не опÑеделÑн
              Ð´Ð»Ñ Ð½Ð¾ÑмализованнÑÑ ÑиÑел.

       c      ÐÑли модиÑикаÑÐ¾Ñ l не Ñказан, Ñо паÑамеÑÑ
              int  пÑеобÑазÑеÑÑÑ Ð² unsigned char и вÑводиÑÑÑ
              как ÑезÑлÑÑиÑÑÑÑее знаÑение. ÐÑли l
              Ñказан, Ñо паÑамеÑÑ wint_t (ÑиÑокий Ñимвол)
              пÑеобÑазÑеÑÑÑ Ð² многобайÑовÑÑ
              поÑледоваÑелÑноÑÑÑ Ð²Ñзовом ÑÑнкÑии
              wcrtomb(3); пеÑвое его знаÑение
              пÑеобÑазÑеÑÑÑ Ð² наÑалÑное знаÑение и
              вÑводиÑÑÑ Ð² виде многобайÑовой ÑÑÑоки.

       s      ÐÑли модиÑикаÑÐ¾Ñ l не Ñказан: паÑамеÑÑ
              const char * пÑеобÑазÑеÑÑÑ Ð² ÑказаÑÐµÐ»Ñ Ð½Ð°
              маÑÑив ÑимволÑного Ñипа (ÑÑÑоковÑй
              ÑказаÑелÑ). Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð· маÑÑива вÑводÑÑÑÑ
              до конеÑного байÑа null ('\0', не вклÑÑаÑ
              его); еÑли Ñказана ÑоÑноÑÑÑ, Ñо вÑводиÑÑÑ
              не более ÑÑÑановленного колиÑеÑÑва
              Ñимволов. ÐÑли ÑоÑноÑÑÑ Ñказана, Ñо байÑ
              null не нÑжен. ÐÑли ÑоÑноÑÑÑ Ð½Ðµ Ñказана
              или она болÑÑе, Ñем ÑÐ°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива, Ñо
              маÑÑив должен ÑодеÑжаÑÑ ÐºÐ¾Ð½ÐµÑнÑй байÑ
              null.

              ÐÑли модиÑикаÑÐ¾Ñ l Ñказан: паÑамеÑÑ const
              wchar_t * должен бÑÑÑ ÑказаÑелем на маÑÑив
              ÑиÑÐ¾ÐºÐ¸Ñ Ñимволов. ШиÑокие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð·
              маÑÑива пÑеобÑазÑÑÑÑÑ Ð² многобайÑовÑе
              ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (каждÑй вÑзовом ÑÑнкÑии wcrtomb(3),
              пÑи ÑÑом пеÑвое знаÑение пÑеобÑазÑеÑÑÑ Ð²
              наÑалÑное знаÑение пеÑвого ÑиÑокого
              Ñимвола) и Ñак до конеÑного ÑиÑокого
              Ñимвола null. РезÑлÑÑиÑÑÑÑие
              многобайÑовÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð²ÑводÑÑÑÑ Ð´Ð¾
              конеÑного байÑа null (не вклÑÑÐ°Ñ ÐµÐ³Ð¾).
              ÐÑли Ñказана ÑоÑноÑÑÑ, Ñо вÑводиÑÑÑ
              колиÑеÑÑво байÑов, не пÑевÑÑаÑÑее ÑÑо
              знаÑение, а оÑÑавÑаÑÑÑ ÑаÑÑÑ
              многобайÑовÑÑ Ñимволов не вÑводиÑÑÑ.
              ÐамеÑим, ÑÑо ÑоÑноÑÑÑ Ð¾Ð¿ÑеделÑеÑÑÑ
              колиÑеÑÑвом вÑведеннÑÑ Ð±Ð°Ð¹Ñ, не ÑиÑокиÑ
              Ñимволов или положением на ÑкÑане.
              ÐаÑÑив должен ÑодеÑжаÑÑ ÐºÐ¾Ð½ÐµÑнÑй
              ÑиÑокий Ñимвол null, еÑли ÑоÑноÑÑÑ Ð½Ðµ
              Ñказана, и ÑодеÑжаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво байÑ,
              менÑÑе ÑазмеÑа маÑÑива.

       C      (оÑÑÑÑÑÑвÑÐµÑ Ð² C99 или C11, но еÑÑÑ Ð² SUSv2, SUSv3 и
              SUSv4) Синоним lc. Ðе иÑполÑзÑйÑе.

       S      (оÑÑÑÑÑÑвÑÐµÑ Ð² C99 или C11, но еÑÑÑ Ð² SUSv2, SUSv3 и
              SUSv4) Синоним ls. Ðе иÑполÑзÑйÑе.

       p      ÐаÑамеÑÑ ÑказаÑÐµÐ»Ñ void *, вÑводÑÑийÑÑ Ð²
              ÑеÑÑнадÑаÑеÑиÑном виде (Ñакже как пÑи %#x
              или %#lx).

       n      ÐолиÑеÑÑво Ñимволов, вÑводÑÑиÑÑÑ Ð² Ñелом
              Ñипе int * (или дÑÑгиÑ) без пÑеобÑазÑÑÑиÑ
              паÑамеÑÑов. ÐаннÑй паÑамеÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ
              int * или его ваÑианÑом, ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑого
              ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ (необÑзаÑелÑно) ÑказÑваемÑм
              ÑелÑм модиÑикаÑоÑом длинÑ. ÐаÑамеÑÑ Ð½Ðµ
              пÑеобÑазÑеÑÑÑ (даннÑй Ñип не
              поддеÑживаеÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой bionic C).
              Ðоведение не опÑеделено, еÑли Ñип
              пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑодеÑÐ¶Ð¸Ñ Ñлаги, ÑиÑинÑ
              Ð¿Ð¾Ð»Ñ Ð¸Ð»Ð¸ ÑоÑноÑÑÑ.

       m      (ÑаÑÑиÑение glibc; поддеÑживаеÑÑÑ uClibc и
              musl) ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑодеÑжимое strerror(errno).
              ÐаÑамеÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ.

       %      ÐÑÐ²Ð¾Ð´Ð¸Ñ Ñимвол '%'. ÐаÑамеÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ.
              ÐолнÑй ÑпеÑиÑикаÑÐ¾Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ â '%%'.

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении даннÑе ÑÑнкÑии
       возвÑаÑаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво напеÑаÑаннÑÑ Ñимволов
       (не вклÑÑÐ°Ñ Ð±Ð°Ð¹Ñ null, иÑполÑзÑемÑй в конÑе
       вÑводимÑÑ ÑÑÑок).

       ФÑнкÑии snprintf() и vsnprintf() запиÑÑваÑÑ Ð½Ðµ более
       size Ð±Ð°Ð¹Ñ (вклÑÑÐ°Ñ ÐºÐ¾Ð½ÐµÑнÑй Ð±Ð°Ð¹Ñ null ('\0')). ÐÑли
       вÑвод бÑл обÑезан из-за данного
       огÑаниÑениÑ, Ñо возвÑаÑаемое знаÑение ÑÑо
       колиÑеÑÑво Ñимволов (не вклÑÑÐ°Ñ ÐºÐ¾Ð½ÐµÑнÑй
       Ð±Ð°Ð¹Ñ null), коÑоÑое бÑло Ð±Ñ Ð·Ð°Ð¿Ð¸Ñано в
       ÑезÑлÑÑиÑÑÑÑÑÑ ÑÑÑокÑ, еÑли Ð±Ñ Ð±Ñло доÑÑаÑоÑно
       меÑÑа. Таким обÑазом, еÑли возвÑаÑÑнное
       знаÑение болÑÑе или Ñавно size, Ñо вÑвод бÑл
       обÑезан (Ñакже ÑмоÑÑиÑе ÐÐÐÐЧÐÐÐЯ ниже).

       ÐÑли возникла оÑибка, Ñо возвÑаÑаеÑÑÑ
       оÑÑиÑаÑелÑное знаÑение.

ÐТРÐÐУТЫ
       ÐпиÑание ÑеÑминов данного Ñаздела ÑмоÑÑиÑе
       в attributes(7).

       ┌────────────────────────┬────────────────────────────────┬────────────────┐
       │ÐнÑеÑÑÐµÐ¹Ñ           ÐÑÑибÑÑ                      ÐнаÑение │
       ├────────────────────────┼────────────────────────────────┼────────────────┤
       │printf(), fprintf(),    │ ÐезвÑедноÑÑÑ Ð² ниÑÑÑ │ MT-Safe locale │
       │sprintf(), snprintf(),  │                                │                │
       │vprintf(), vfprintf(),  │                                │                │
       │vsprintf(), vsnprintf() │                                │                │
       └────────────────────────┴────────────────────────────────┴────────────────┘

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       fprintf(), printf(), sprintf(), vprintf(), vfprintf(), vsprintf():
       POSIX.1-2001, POSIX.1-2008, C89, C99.

       snprintf(), vsnprintf(): POSIX.1-2001, POSIX.1-2008, C99.

       ФÑнкÑии dprintf() и vdprintf() изнаÑалÑно ÑвлÑлиÑÑ
       ÑаÑÑиÑениÑми GNU, но позже бÑли
       ÑÑандаÑÑÐ¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² POSIX.1-2008.

       ЧÑо каÑаеÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемого знаÑÐµÐ½Ð¸Ñ snprintf(),
       Ñо ÑÑандаÑÑÑ SUSv2 и C99 пÑоÑивоÑеÑÐ°Ñ Ð´ÑÑг дÑÑгÑ:
       когда snprintf() вÑзÑваеÑÑÑ Ñ size=0, Ñо SUSv2
       пÑедÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð²Ð¾Ð·Ð²ÑÐ°Ñ Ð½ÐµÐ¾Ð¿ÑеделÑнного
       знаÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑÑе единиÑÑ, а C99 ÑÑÑанавливаеÑ
       в ÑÑом ÑлÑÑае str ÑавнÑм NULL и возвÑаÑаеÑ
       знаÑение (как обÑÑно) в виде колиÑеÑÑва
       Ñимволов, доÑÑаÑоÑного Ð´Ð»Ñ Ð²ÑÑодной ÑÑÑоки. Ð
       POSIX.1-2001 и новее поведение snprintf()
       ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ C99.

       Ð glibc 2.1 Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¼Ð¾Ð´Ð¸ÑикаÑоÑÑ Ð´Ð»Ð¸Ð½Ñ hh, j, t
       и z и ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ a и A.

       Ð glibc 2.2 добавлен Ñимвол пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ F Ñ
       ÑеманÑикой C99, а Ñакже Ñлаг I.

ÐÐÐÐЧÐÐÐЯ
       РнекоÑоÑÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ð°Ñ Ð½ÐµÐ¾ÑмоÑÑиÑелÑно
       иÑполÑзÑеÑÑÑ ÐºÐ¾Ð´

           sprintf(buf, "%s some further text", buf);

       Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа в buf. Ðднако в
       ÑÑандаÑÑÐ°Ñ Ñвно Ñказано, ÑÑо ÑезÑлÑÑÐ°Ñ Ð½Ðµ
       опÑеделÑн, еÑли бÑÑеÑÑ Ð¸ÑÑоÑника и пÑиÑмника
       пеÑекÑÑваÑÑÑÑ Ð¿Ñи вÑÐ·Ð¾Ð²Ð°Ñ sprintf(), snprintf(),
       vsprintf() и vsnprintf(). РзавиÑимоÑÑи о веÑÑии gcc(1)
       и ÑказаннÑÑ Ð¿Ð°ÑамеÑÑÐ°Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑоÑа,
       подобнÑе вÑÐ·Ð¾Ð²Ñ Ð½Ðµ пÑиводÑÑ Ðº ожидаемÑм
       ÑезÑлÑÑаÑам.

       РеализаÑÐ¸Ñ ÑÑнкÑий snprintf() и vsnprintf() в glibc 2.1
       ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ C99 как бÑло опиÑано
       вÑÑе. Ðо glibc 2.0.6, они возвÑаÑали -1 пÑи
       обÑезанном вÑводе.

ÐÐФÐÐТЫ
       Так как sprintf() и vsprintf() ÑабоÑаÑÑ Ñо ÑÑÑокой
       пÑоизволÑной длинÑ, вÑзÑваÑÑие должнÑ
       ÑÑаÑаÑÑÑÑ Ð½Ðµ пеÑеполниÑÑ ÑеалÑное пÑоÑÑÑанÑÑво;
       ÑаÑÑо ÑÑо невозможно гаÑанÑиÑоваÑÑ. ÐамеÑим,
       ÑÑо длина полÑÑаемÑÑ ÑÑÑок завиÑÐ¸Ñ Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸
       и ÐµÑ Ñложно пÑедÑказаÑÑ. ÐмеÑÑо ниÑ
       иÑполÑзÑйÑе snprintf() и vsnprintf() (или asprintf(3) и
       vasprintf(3)).

       Ðод, подобнÑй printf(foo); ÑаÑÑо ознаÑÐ°ÐµÑ Ð¾ÑибкÑ,
       Ñак как foo Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ñимвол %. ÐÑли
       ÑодеÑжимое foo пÑиÑло из недовеÑиÑелÑного
       полÑзоваÑелÑÑкого ввода, Ñо в нÑм можеÑ
       ÑодеÑжаÑÑÑÑ %n, из-за Ñего вÑзов printf() ÑделаÑÑ
       запиÑÑ Ð² памÑÑÑ Ð¸ ÑоздаÑÑ Ð´ÑÑÑ Ð² безопаÑноÑÑи.

ÐÐ ÐÐÐÐ
       ÐеÑаÑÑ Pi Ñ Ð¿ÑÑÑÑ Ð·Ð½Ð°ÐºÐ°Ð¼Ð¸:

           #include <math.h>
           #include <stdio.h>
           fprintf(stdout, "pi = %.5f\n", 4 * atan(1.0));

       ÐеÑаÑÑ Ð´Ð°ÑÑ Ð¸ вÑемени в виде «Sunday, July 3, 10:02»,
       где weekday и month ÑказаÑели на ÑÑÑоки:

           #include <stdio.h>
           fprintf(stdout, "%s, %s %d, %.2d:%.2d\n",
                   weekday, month, day, hour, min);

       Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑÑÑÐ°Ð½Ð°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок
       денÑ-меÑÑÑ-год. ÐÐ¾Ñ Ð¿ÐµÑаÑÑ Ð°ÑгÑменÑов в ÑоÑмаÑе
       Ñ ÑÑÑÑом инÑеÑнаÑионалÑноÑÑи:

           #include <stdio.h>
           fprintf(stdout, format,
                   weekday, month, day, hour, min);

       где format завиÑÐ¸Ñ Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ и можеÑ
       пеÑеÑÑавлÑÑÑ Ð°ÑгÑменÑÑ. Со знаÑением:

           "%1$s, %3$d. %2$s, %4$d:%5$.2d\n"

       полÑÑаеÑÑÑ Â«Sonntag, 3. Juli, 10:02».

       ÐÑделение доÑÑаÑоÑно болÑÑой ÑÑÑоки и пеÑаÑÑ
       в Ð½ÐµÑ (код ÑабоÑÐ°ÐµÑ Ð¸ Ñ glibc 2.0, и Ñ glibc 2.1):

       #include <stdio.h>
       #include <stdlib.h>
       #include <stdarg.h>

       char *
       make_message(const char *fmt, ...)
       {
           int size = 0;
           char *p = NULL;
           va_list ap;

           /* опÑеделим ÑÑебÑемÑй ÑÐ°Ð·Ð¼ÐµÑ */

           va_start(ap, fmt);
           size = vsnprintf(p, size, fmt, ap);
           va_end(ap);

           if (size < 0)
               return NULL;

           size++;             /* Ð´Ð»Ñ '\0' */
           p = malloc(size);
           if (p == NULL)
               return NULL;

           va_start(ap, fmt);
           size = vsnprintf(p, size, fmt, ap);
           if (size < 0) {
               free(p);
               return NULL;
           }
           va_end(ap);

           return p;
       }

       ÐÑли пÑоиÑÑÐ¾Ð´Ð¸Ñ Ð¾Ð±Ñезание в веÑÑиÑÑ glibc до
       2.0.6, Ñо ÑÑо ÑÑиÑаеÑÑÑ Ð¾Ñибкой.

СÐÐТРÐТРТÐÐÐÐ
       printf(1), asprintf(3), dprintf(3), puts(3), scanf(3), setlocale(3),
       wcrtomb(3), wprintf(3), locale(5)



GNU                               2016-07-17                         PRINTF(3)