Форматированный ввод с клавиатуры.

Оператор вызова функции 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.