Russian Belarusian English German Japanese Ukrainian
  • Главная
  • Строка форматирования функций ввода

Описанная ниже строка формата, используется во многих функциях ввода данных (scanf, fscanf, sscanf и др.). Строка может включать три вида элементов:

  • пробельные символы (пробел « », табуляцию «\t», символ новой строки «\n»
  • не пробельные печатные символы (кроме %)
  • спецификации формата

Если в строке встретился пробельный символ, то с этого момента пробельные символы до первого не пробельного символа считываются из входного потока, но не участвуют в присваивании значений переменным (игнорируются).

Если в строке встретился печатный не пробельный символ, то с этого момента из входного потока считывается и игнорируется последовательность символов, встретившаяся в строке формата. Если последовательность символов во входном потоке не соответствует записанной в строке формата, то форматирование прерывается.

Спецификации формата начинаются с символа % и имеют вид:
%, [*] [width] [FIN] [h|l|L] type

Все символы спецификации записываются без пробелов между ними.

Единственно обязательным элементом спецификации является type - символ, указывающий на то, как будет трактоваться вводимый аргумент. Остальные необязательные элементы задают параметры форматирования:

Значение Описание
[*] Запрет занесения в память читаемого поля. Поле сканируется, но его значение не присваивается аргументу из списка.
[width] Ширина поля - максимальное число читаемых символов. Реально может быть прочитано меньше символов, если во входном потоке раньше встретится пробельный символ или символ, который не может быть преобразован согласно заданному формату.
[F|N] Модификаторы, изменяющие размер аргумента по умолчанию:
N ближний указатель (near)
F дальний указатель (far)
[h|l|L] Модификаторы, изменяющие размер аргумента по умолчанию:
short int
l longint, если type соответствует целому числу, или double, если type соответствует действительному числу
L long double

Ниже приведены возможные значения type.

Символ Ожидаемый тип данных Тип аргумента
d целый указатель на int(int*arg)
D целый указатель на long(long*arg)
e, E действительный указатель на float(float*arg)
f действительный указатель на float(float*arg)
g, G действительный указатель на float(float*arg)
o восьмеричный целый указатель на int(int*arg)
O восьмеричный целый указатель на long(long*arg)
i десятичный, восьмеричный или шестнадцатеричный целый указатель на int(int*arg)
I десятичный, восьмеричный или шестнадцатеричный целый указатель на long(long*arg)
u десятичный целый без знака указатель на unsigned int (unsigned int *arg)
U десятичный целый без знака указатель на unsigned long (unsigned long *arg)
x шестнадцатеричный целый указатель на int(int*arg)
X шестнадцатеричный целый указатель на int(int*arg)
Символы
s строка символов указатель на массив символов (chararg[])
c символ указатель на char(char*arg) или, если задана ширина поля (например, % 5с), то на массив символов размером W(chararg[W])
% символ % не преобразуется
Указатели
n указатель на int(int*arg) в ячейку памяти, на которую указывает аргумент, заносится количество успешно прочитанных к данному моменту символов
P шестнадцатеричный формат: YYYY:ZZZZили ZZZZ указатель на объект (far* или near*)
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту