Функции ввода информации

Функция scanf() предназначена для форматированного ввода исходной информации с клавиатуры

Общий вид этой функции:

scanf (<управляющая строка>, список адресов элементов ввода>);

Количество, тип и порядок следования форматов должен точно совпадать с количеством, типом и порядком следования вводимых объектов, иначе результат ввода непредсказуем.

Для нее также как и для printf() указывается управляющая строка, в которой указываются только модификаторы форматов (без пробелов), список аргументов. Но если функция printf() использует идентификаторы переменных, константы и выражения, то scanf() использует только указатели на переменные, то есть их адреса.

Таким образом, для ввода значения переменной перед ее идентификатором требуется указать символ &, обозначающий адрес переменной.

Если нужно ввести значение строковой переменной, то использовать символ & не нужно, так как строка - это массив символов, а ID массива эквивалентно адресу его нулевого элемента, т.е. его базовому адресу. Например:

int course;

float grant;

char name[20];

printf(" Укажите курс, стипендию, имя \n");

scanf("%d%f%s",&course, &grant, name);

Вводить данные с клавиатуры можно как в одной строке через пробелы, так и в разных строках.

Функция scanf() использует практически тот же набор специфика­ций преобразования (форматов), что и функция printf(), отличия - отсутствует формат %g, форматы %e,%f - эквивалентны.

Внимание, используя функцию scanf() для ввода строки по формату %s необходимо помнить, что ввод происходит только до первого пробела. Для ввода фраз, состоящих из слов используется функция:

gets(<ID строковой переменной>);