Для функций printf, scanf существуют спецификаторы формата. Это условные обозначения, позволяющие считать из входящего потока определенную конструкцию и сохранить ее. Существует довольно большое число спецификаторов, но используют обычно лишь несколько из них.
Популярны, например, следующие спецификаторы:
- %с - символ,
- %s - строка,
- %d - десятичное целое число,
- %a - шестнадцатеричное целое число,
- %f - вещественное число.
Рассмотрим пример
1 |
printf("Это %с %s %d", 'я', "купил", 10); |
Данная функция выведет “Это я купил 10”.
Модификатор %с выводит символ ‘я’, модификатор %s выводит строку, причем концом строки служит первый найденный символ пробела, а %d выводит целое число в десятичном формате. Схожим образом работает и функция scanf.
1 2 3 |
char str [80]; printf ("Введите строку: "); scanf ("%79s",str); |
Благодаря модификатору %s функция считывает введенные символы и записывает их в массив символов str. Как вы заметили, в модификаторе присутствует число. Это один из вариантов изменения модификатора, указывающий длину, которую считывает функцию с этим модификатором. Так, к примеру, %5d считает только первые 5 символов из найденного целого числа.
Отдельной группой стоят управляющие символы. Они позволяют определенным образом форматировать вывод и добавляют определенные символы. Например,
1 |
cout << "\t move 1 C++ \n\r new line \n \’ \” spec \a"; |
Символ \t производит табуляцию строки, \n начинает новую строку, \r возвращает каретку на начало строки, а \’ и \” печатают символы ’ и ”, которые иначе нельзя добавить в строку. Символ \a служит для подачи звукового сигнала компьютером.