Примеры допустимых типов форматов ввода приведены в таблице ниже.
В квадратных скобках указаны необязательные элементы формата.
Тип - это символ типа формата вводимого значения.
H - short;
I или L - long или double; .
W - width - ширина - десятичное целое, определяет максимальный, размер поля вводимого значения;
F|N - определяет тип адресации аргумента (Far, Near);
h|l|L - определяет уточнение типа аргумента вводимого значения, то есть вариант типа:
Тип формата
Интерпретация значения, выделенного при вводе
Тип аргумента –указатель на
d
десятичное целое
int
D
“ — ”
long
o
восьмеричное целое
int
O
“ — ”
long
x
шестнадцатеричное целое
int
X
“ — ”
long
i
десятичное, восьмеричное или шестнадцатеричное целое
int
u
десятичное целое без знака
unassigned int
U
“ — ”
unassigned long
e, E
число с плавающей точкой
float / double
f, F
число с фиксированной точкой
float / double
c
символ, в т. ч. пробел
char
s
строка
char
n
чтение из потока не производится
int
Последовательность ряда вводимых чисел может разделяться одним и более пробелов. При этом переход за следующим числом на следующую строку текстового файла производится автоматически. При наличииw- размера поля - вводимые арифметические значения можно писать впритык, без пробелов между значениями.
Спецификаторамd,i,o,u,хможет предшествовать:
-h- если аргументы - указатели на типshort int;
-l- если аргументы - указатели на типlong int/
Спецификатораме,E,f,Fможет предшествовать:
-I- если аргументы - указатели на типdouble (а неfloat)
-L- если аргументы - указатели на типlongdouble.
Значение с плавающей точкой, вводимое по форматаме,E,f,Fво входном потоке, может содержать число с фиксированной точкой и (необязательно) -экспоненту - символеилиЕ, за которым следует порядок. Например, допустимы:123 1.23 1.23е-2 1.23Е-2
С помощью форматасвводится один очередной символ, в том числе пробельный. Чтобы ввести строку изwсимволов, включающую и пробелы, и символ конца строки (\n), надо использовать формат%wc. Если при вводе строки форматом%wcвведен символ перехода на следующую строку, то при выводе этой строки, он вызовет переход на следующую строку, на которую и будет продолжен вывод.
- С помощью форматаsвводится строка символов до очередного пробела; после последнего символа введенной строки помещается символ\0- конца строки. Символы перехода на следующую строку (\n) считываются наравне с другими символами. Для чтения следующего непробельного символа можно воспользоваться форматом%1s.
С помощью формата%*wsможно пропустить очередное поле сwнепробельными символами; а с помощью формата%*10сбудут пропущены очередные 10 любых, в том числе пробельных, символов входного потока. Для таких форматов аргументы не требуются. Примеры форматов:
Для формата%nиз входного потока не производится чтение очередного значения для очередного аргумента, но значение в ОП, соответствующее очередному аргументу, может быть искажено.
Если в строке форматов стоит символ, который не является символом допустимого типа формата, то этот символ и все последующие символы до следующего символа % интерпретируются как последовательность символов, которые игнорируются при их появлении во входном потоке. Если их нет во входном потоке, результат ввода неопределен. Например, чтобы задать игнорирование символов входного потокаа =, можно использовать следующий вызов функцииscanf:
scanf( "а = %d”, &а ) ;
Во входном потоке может быть: а = 123.
При выполнении ввода символы а = из входного потока игнорируются, а в качестве значения переменной а введется значение 123.