Книга: Язык Си - руководство для начинающих

Функция scanf( )

Функция scanf( )

     Мы уже использовали ранее функцию scanf( ) и формат %s для считывания строки. Основное различие между scanf( ) и gets( ) заключается в том, как они определяют, что достигли конца строки: scanf( ) предназначена скорее для получения слова, а не строки. Функция gets( ), как мы уже видели, принимает все символы до тех пор, пока нс встретит первый символ "новая строка". Функция scanf( ) имеет два варианта. Для любого из них строка начинается с первого встретившегося непустого символа. Если вы используете формат %s, строка продолжается до (но не включая) следующего пустого символа (пробел, табуляция или новая строка). Если вы определяете размер поля как %10s, то функция scanf( ) считает нe более 10 символов или же считает до любого пришедшего первым пустого символа.

     Функция scanf( ) возвращает целое значение, равное числу счи танных символов, если ввод прошел успению, или символ EОF, ее ли он встретился.

/* scanf( ) и подсчет количества */

main( )

{

static char name1[40], name2[11];

int count;

printf(" Введите, пожалуйста, 2 имени.n");

count = scanf(" %s  %10s", name1, name2);

printf(" Я считал %d имен %s и %s.n", count, name1, name2);

}

Вот два примера работы программы:

Введите, пожалуйста, два имени.

Джсссика  Джукс.

Я считал два имени

Джсссика  и  Джукс.

Введите, пожалуйста, 2 имени.

Лиза Апплеботтхэм

Я считал 2 имени Лиза и Апплеботтхэм.

Во втором примере были считаны только первые 10 символов от Апплеботтхэм, так как мы использовали формат %10s.

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

Оглавление книги


Генерация: 0.635. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз