вторник, 10 января 2012 г.

Возможности С++. Функция printf()

Функции printf() - функция вывода.
Обычно, при корректной работе функции, она возвращают длину выведенной строки. В случае некорректной работы - возвращает отрицательное число.
Функция printf():
ptintf("", args);
Первым аргументом функции является строка формата. Последующими аргументами функции printf() являются переменные, которые подаются на ввод.

Рассмотрим подробнее строку, подаваемую на вход функции.
В ней можно использовать специальные сочетания - спецификаторы - которые позволяют функции проводить манипуляции с переменными.

Спецификатор состоит из символа % и некой группе символов, дающих понятие о типе выводимой переменной и других параметрах

Ниже приведена таблица соответствия спецификаторов и типов:
Если есть два одинаковых спецификатора, обозначающиеся буквами разных регистров, значит в выводе будут участвовать буквы того же регистра

Таким образом, чтобы вывести переменную типа long long, нужно написать следующие строки:
int n=1234567891;
printf("%i", n);
Полностью равносильным вариантом этой записи является такая:
int n=1234567891;
printf("%d", n);

Особое внимание нужно уделить спецификатору %s. Этот спецификатор не поддерживает тип string, он работает лишь с массивом символов - char a[].
Таким образом, чтобы вывести некоторую строку, нужно написать следующее:
char str[]="Hello, world!";
printf("%s", str);

Также у функции printf() есть немало замечательных возможностей:
  • Возможность устанавливать число знаков после запятой у нецелых чисел. Для этого нужно модифицировать спецификатор следующим образом: %.nf где n - нужно число знаков после запятой.
    При таком синтаксисе спецификатора функция автоматически округляет число до последнего напечатанного знака, т.е. код:
    double e=2.718;
    printf("e=%.2f", e);
    Выведет строку: e=2.72
    • Если точность числа указана в переменной, то можно использовать следующую структуру спецификатора: %*.f. При такой записи вместо * будет соответствующая ей переменная. Код выглядит так:
      int tochnost=3;
      double pi=3.1415;
      printf("pi=%.*i", tochnost, pi);
      Вывод: 3.142
  • Существуют модификаторы, позволяющие изменять уже существующие спецификаторы:
    • Модификатор l позволяет превращать формат вывода данных в тип long [тип] для спецификаторов %i, %d, %o, %x
    • Модификатор ll  позволяет превращать формат вывода данных в тип long long [тип] для спецификаторов %i, %d, %o, %x.
      Таким образом, чтобы вывести переменную типа long long нужно написать:
      long long n;
      cin >> n;
      printf("%lli", n);
  • Возможность устанавливать ширину вводимой спецификатором строки. Данный модификатор устроен следующим образом: %[0]ni, где 0 - необязательный параметр, а n - ширина строки. Если ширина строки больше n, то строка остается неизменной, если меньше - то она дополняется до нужной ширины пробелами ( или 0 - если указано ).
    Таким образом следующий кусок кода выведет:
    int n=123;
    printf("%05i", n);
    Вывод: 00123
    А такой код выведет:
    int n=131456;
    printf("%5i", n);
    Вывод: 131456
    • Если ширина строки хранится в переменной то можно использовать следующей структурой модификатора: %[0]*i, где 0 остается также необязательным, а * в процессе будет заменена на нужную переменную:
      int zero=6;
      int n=123;
      printf("%0*i", zero, n);
      Вывод: 000123
  • Флаги - символы. В этой статье я рассмотрю только символ '+'. Этот символ указывает на то, что перед числом обязательно стоит знак: '+' - если число больше 0, '-' - если меньше. Если число равно 0, то при записи "0" или "+0" выводится "+0", а при записи "-0" выводится "-0". Данный флаг должен располагаться строго после знака '%'.
    int n=123;
    printf("%+i", n);
    Вывод: +123
Напоследок я рассмотрю случаи ввода нескольких переменных:
int a=1, b=2;
double c=3.14;
char points[]="...";
printf("a=%i b=%i pi=%f %s", a, b, c, points);

Вывод: a=1 b=2 pi=3.140000 ...
Таким образом видно, что порядок переменных, перечисляемых в функции, должен совпадать с порядком спецификаторов в строке формата.

В конце я хочу привести таблицу специальных символов, используемых в printf():
А последний пример проиллюстрирует использование символа \r:
printf("Hello\rworld");
Вывод: world

На этом я заканчиваю статью.


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

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