Программирование с C++ Builder



Функция scanf



Наиболее универсальной функцией, которая позволяет ввести данные с клавиатуры, является функция scanf. В общем виде инструкция вызова функции scanf для ввода значения одной переменной выглядит так:

scanf(Формат,& Переменная);


где:

  •  Формат — это строка, которая содержит спецификатор формата, определяющий то, как должна интерпретироваться строка, введенная с клавиатуры. Наиболее часто используемыми спецификаторами являются: %1 — для ввода целых, %f — для ввода дробных, %s — для ввода строк;
  • &переменная — это адрес переменной, значение которой вводится. Например, инструкция


scanf("%i", Skol);

вводит целое число, а инструкция

scanf("%i%f", &kol, Scena);

вводит целое и дробное.

При вызове функции scanf происходит следующее. Программа приостанавливает работу и ждет, пока пользователь наберет на клавиатуре строку символов и нажмет клавишу <Enter>. До нажатия <Enter> можно редактировать вводимую строку (например, нажав клавишу <Back Space> можно удалить последний введенный символ). После нажатия клавиши <Enter> функция scanf преобразует введенную строку в данные и записывает их в переменную, адрес которой указан. Преобразование выполняется в соответствии со спецификатором формата. Например, в результате выполнения инструкции scanf ("%f", scena) и набора на клавиатуре строки 25.99 значение переменной сеnа будет равно 25.99.

Следует обратить внимание, что при использовании функции scanf наиболее частой ошибкой, причем не обнаруживаемой компилятором, является отсутствие символа & перед именем переменной.

Если введенная пользователем строка не соответствует типу ожидаемых данных — например, программа ждет ввода целого числа, а пользователь ввел дробное, — то функция scanf обрабатывает только ту часть введенной строки, которая может быть преобразована в требуемые данные. Например, в программе для ввода данных о стоимости покупки используется инструкция scanf("%i%f", &kol, scena), которая предполагает, что пользователь введет в одной строке сначала количество предметов, а затем цену предмета. Если во время работы программы вместо строки 3 24.99 (три предмета по 24.99) ввести строку 24.99 3, то значение переменной koi будет равно 24, а переменной сеnа — 99.