Входной поток содержит:
56 789 0123 56АВС
Вызов функции:
int i, float x; char name [50];
scanf ("%2d%f%*d,% [0-9]", &i, &x, name);
76 Форматированный ввод
Переменной i присваивается значение 56, переменной х — значение 789.0, символы 0123 пропускаются, строка "56" присваивается переменной name. Последующий ввод символа из этого потока функцией getchar дает значение 'А'.
13.1. Спецификация преобразования
% [*] [ширина] /дополнительные j символ
L признаки J преобразования
Символ * обозначает пропуск при вводе поля, определенного данной спецификацией; вводимое значение не присваивается никакой переменной.
Ширина определяет максимальное число символов, вводимых по данной спецификации.
13.2. Пустые символы
Пробел или символ табуляции в форматной строке описывает один или более пустых символов. Пустые символы (пробел, символ табуляции, символы новой строки, перевода формата, вертикальной табуляции) во входном потоке в общем случае рассматриваются как разделители полей.
13.3. Литеральные символы
Литеральные символы в форматной строке, за исключением символов пробела, табуляции и символа %, требуют, чтобы во входном потоке появились точно такие же символы.
13.4. Спецификация ввода символа
% [*] [ширина] с
Ширина определяет число символов, которые должны быть прочитаны из входного потока и присвоены массиву символов. Если ширина опущена, то вводится один символ. По данной спецификации можно вводить пустые символы.
Форматированный ввод 77
13.5. Спецификация ввода строки
% [*] [ширина] s
Ширина описывает максимальную длину вводимой строки. Строки во входном потоке должны разделяться пустыми символами;
ведущие пустые символы игнорируются.
13.6. Спецификация ввода целого числа
н
%[*] [ширина] ^] ^
Буква 1 определяет тип вводимых данных как long, буква h - как short. По умолчанию принимается тип int. Символы преобразования
d - десятичное целое со знаком;
u — десятичное целое без знака;
о — восьмеричное целое без знака;
х - шестнадцатеричное целое без знака.