Функции printf() - функция вывода.
Обычно, при корректной работе функции, она возвращают длину выведенной строки. В случае некорректной работы - возвращает отрицательное число.
Функция printf():
Рассмотрим подробнее строку, подаваемую на вход функции.
В ней можно использовать специальные сочетания - спецификаторы - которые позволяют функции проводить манипуляции с переменными.
Спецификатор состоит из символа % и некой группе символов, дающих понятие о типе выводимой переменной и других параметрах
Ниже приведена таблица соответствия спецификаторов и типов:
Таким образом, чтобы вывести переменную типа long long, нужно написать следующие строки:
Особое внимание нужно уделить спецификатору %s. Этот спецификатор не поддерживает тип string, он работает лишь с массивом символов - char a[].
Таким образом, чтобы вывести некоторую строку, нужно написать следующее:
Также у функции printf() есть немало замечательных возможностей:
Вывод: a=1 b=2 pi=3.140000 ...
Таким образом видно, что порядок переменных, перечисляемых в функции, должен совпадать с порядком спецификаторов в строке формата.
В конце я хочу привести таблицу специальных символов, используемых в 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 - нужно число знаков после запятой.
При таком синтаксисе спецификатора функция автоматически округляет число до последнего напечатанного знака, т.е. код:
Выведет строку: e=2.72double e=2.718; printf("e=%.2f", e);
- Если точность числа указана в переменной, то можно использовать следующую структуру спецификатора: %*.f. При такой записи вместо * будет соответствующая ей переменная. Код выглядит так:
Вывод: 3.142int tochnost=3; double pi=3.1415; printf("pi=%.*i", tochnost, pi);
- Существуют модификаторы, позволяющие изменять уже существующие спецификаторы:
- Модификатор 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 - если указано ).
Таким образом следующий кусок кода выведет:
Вывод: 00123int n=123; printf("%05i", n);
А такой код выведет:
Вывод: 131456int n=131456; printf("%5i", n);
- Если ширина строки хранится в переменной то можно использовать следующей структурой модификатора: %[0]*i, где 0 остается также необязательным, а * в процессе будет заменена на нужную переменную:
Вывод: 000123int zero=6; int n=123; printf("%0*i", zero, n);
- Флаги - символы. В этой статье я рассмотрю только символ '+'. Этот символ указывает на то, что перед числом обязательно стоит знак: '+' - если число больше 0, '-' - если меньше. Если число равно 0, то при записи "0" или "+0" выводится "+0", а при записи "-0" выводится "-0". Данный флаг должен располагаться строго после знака '%'.
Вывод: +123int n=123; printf("%+i", n);
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
На этом я заканчиваю статью.
Комментариев нет:
Отправить комментарий