
- •Основные понятия языка
- •Переменные и константы
- •Форматированный ввод данных
- •Лекция 3. Операторы языка
- •Операторы цикла
- •If (проверка_условия) оператор_1; else оператор_2;
- •Массивы
- •Структуры
- •Лекция 5. Функции. Рекурсивные функции. Файлы. Функции для работы с файлами.
- •Указатели на функции
- •Int Count; //Число фамилий в справочнике
Форматированный ввод данных
Функция 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);