Форматированный ввод с клавиатуры.
Оператор вызова функции scanf() имеет структуру:
scanf(форматная_строка, список_аргументов);
В scanf() форматная строка и список аргументов присутствуют обязательно.
В программе из примера имеется оператор:
scanf("%f",&a);
Здесь:
"%f" - форматная строка;
&а — список аргументов, состоящий из одного элемента.
Символьная последовательность, вводимая с клавиатуры и воспринимаемая функцией scanf(), называть входным потоком.
Функция scanf() выполняет следующие действия:
· разделяет входной поток на отдельные вводимые величины;
· интерпретирует их в соответствии с указанным типом и форматом;
· присваивает переменным, содержащимся в списке аргументов.
Список аргументов — это перечень вводимых переменных, причем перед именем каждой переменной ставится значок &.
Это знак операции «взятие адреса переменной»(тема доклада).
Форматная строка заключается в кавычки (как и для printf) и состоит из списка спецификаций.
Каждая спецификация начинается со знака %, после которого могут следовать:
· ширина поля;
· модификатор;
· спецификатор.
Из них обязательным элементом является лишь спецификатор.
Для ввода числовых данных используются следующие спецификаторы:
d — для целых десятичных чисел (тип int);
u — для целых десятичных чисел без знака (тип unsigned int);
f — для вещественных чисел (тип float) в форме с фиксированной точкой;
е — для вещественных чисел (тип float) в форме с плавающей точкой.
Звездочка в спецификации позволяет пропустить во входном потоке определенное количество символов. Ширина поля — целое положительное число, позволяющее определить число символов из входного потока, принадлежащих значению соответствующей вводимой переменной.
В программе из примера 1 все три величины а, b, c можно ввести одним оператором:
scanf("%f%f%f",&a,&b,&c);
Разделителем в потоке ввода между значениями может быть любое количество пробелов, а также другие пробельные символы: знак табуляции, конец строки.
Последовательность ввода данных с клавиатуры:
5 3.2 2.4 <Enter>
Только после нажатия на клавишу Enter вводимые значения присвоятся соответствующим переменным. До этого входной поток помещается в буфер клавиатуры и может редактироваться.
Переменные получат значения:
а = 5,0, b = 3,2, с = 2,4.