Добавил:
Оставь надежду всяк сюда поступивший Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Синников С++ / IV New hope.doc
Скачиваний:
63
Добавлен:
13.01.2019
Размер:
282.11 Кб
Скачать

28 Форматированный ввод данных

Функция scanf( ) (прототип содержится в файле stdio.h) обеспечивает форматированный ввод. Ее можно записать в следующем формальном виде:

scanf("управляющая строка", аргумент_1, аргумент_2,...);

Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. Назначение указателей будет рассмотрено далее.

Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. В нее могут включаться:

пробелы, символы табуляции и перехода на новую строку (все они игнорируются);

спецификации преобразования, состоящие из знака %, возможно, символа * (запрещение присваивания), возможно, числа, задающего максимальный размер поля, и самого символа преобразования;

обычные символы, кроме % (считается, что они должны совпадать с очередными неизвестными символами во входном потоке).

Рассмотрим символы преобразования функции scanf( ) (указываются после символа %):

с - на входе ожидается появление одиночного символа;

d или i - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа int;

D или l - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа long;

е или Е - на входе ожидается вещественное число с плавающей точкой;

f - на входе ожидается вещественное число с плавающей точкой;

g или G - на входе ожидается вещественное число с плавающей точкой;

о - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа int;

О - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа long;

s - на входе ожидается появление строки символов;

х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа int;

Х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа long;

р - на входе ожидается появление указателя в виде шестнадцатеричного числа;

n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции (после ввода), в которой записана спецификация %n;

u - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned int;

U - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned long;

[ ] - сканирует входную строку для получения символов.

Перед некоторыми символами преобразования могут записываться следующие модификаторы:

F - изменяет указатель, заданный по умолчанию, на указатель типа far;

N - изменяет указатель, заданный по умолчанию, на указатель типа near;

h - преобразует аргумент к типу short int (может записываться перед символами d, i, о, u, х);

l - преобразует аргумент к типу long int (может записываться перед символами d, i, o, u, x);

L - преобразует аргумент к типу long double (может записываться перед символами е, f, g).

Ввести целое число (int a;), символ (char b;) и вещественное число (float t;) можно так:

scanf("%d", &a);

scanf("%c", &b);

scanf("%d%c%f",&a, &b, &t);

Соседние файлы в папке Синников С++