|
Глава 4 - Применение функции scanf( ) |
Страница 10 из 12
Поскольку в дальнейшем мы будем пользоваться функция scanf( ) лишь эпизодически, мы рассмотрим здесь только основные особенности ее применения. Так же как для функции printf( ), для функции scanf( ) указыва ются управляющая строка и следующий за ней список аргументов. Основное различие двух этих функций заключается в особенности данного списка. Функция printf( ) использует имена переменных константы и выражения, в то время как функция scanf( ) - только указатели на переменные. К счастью, при применении этой функ ции мы ничего не должны знать о таких указателях. Необходимо помнить только два правила: main( ) Вот пример диалога: Укажите ВАШ ВОЗРАСТ, состояние и любимое животное. Функция scanf( ) использует некоторые специальные знаки (про белы, символы табуляции и "новая строка") для разбиения входного потока символов на отдельные поля. Она согласует последова тельность спецификаций преобразования с последовательностью полей, опуская упомянутые специальные знаки между ними. Обратите внимание, что наша входная информация располагается на двух строках. Точно так же мы могли бы использовать одну или пять строк при условии, что вводимые величины разделяются по крайней мере одним знаком типа "новой строки", пробела или символа табуляции. Единственным исключением из этого является спецификация %с, обеспечивающая чтение каждого следующего символа даже в том случае, если это "пустой символ". Функция scanf( ) использует практически тот же набор символов спецификации преобразования, что и функция printf( ). Основные отличия в случае функции scanf( ) следующие: Функция scanf( ) не является одной из наиболее часто используемых функций языка Си. Мы обсуждаем ее здесь главным образом из-за ее универсальности (она позволяет читать данные всех имею щихся типов); однако в Си имеется еще несколько других функций, осуществляющих ввод, например getchar( ) и gets( ), которые более удобны для выполнения конкретных задач - чтения одиночных символов или строк, содержащих пробелы. Мы рассмотрим неко торые из этих функций в гл. 6, 13 и 15. |
|