Функция 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 имени. ");

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

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

}

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

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

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

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

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

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

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

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

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

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Функция SUM

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по


Функция uni()

Из книги Fiction Book Designer Краткое руководство автора Автор неизвестен

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция uni()

Из книги Fiction Book Designer 3.2. Краткое руководство автора Izekbis

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция sem_open

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Функция sem_open В листинге 10.22 приведен текст функции sem_open, которая создает новый семафор или открывает существующий.Листинг 10.22. Функция sem_open//my_pxsem_fifo/sem_open.с1  #include "unpipc.h"2  #include "semaphore.h"3  #include <stdarg.h> /* для произвольного списка аргументов */4  mysem_t *5  mysem_open(const char *pathname, int


Функция not

Из книги Технология XSLT автора Валиков Алексей Николаевич


Функция sum

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим


Функция contains

Из книги Fiction Book Designer 3.2. Руководство по созданию книг автора


Функция id

Из книги Введение в криптографию автора Циммерманн Филипп


Функция key

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


Хэш-функция.

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Хэш-функция. Еще одно важное преимущество использования PGP состоит в том, что PGP применяет так называемую «хэш-функцию», которая действует таким образом, что в том случае какого-либо изменения информации, пусть даже на один бит, результат «хэш-функции» будет совершенно


Функция uni()

Из книги автора

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Хэш-функция

Из книги автора

Хэш-функция Однако описанная выше схема имеет ряд существенных недостатков. Она крайне медлительна и производит слишком большой объём данных — по меньшей мере вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования


4. Символьные строки директива #define, функции printf( ) и scanf( ) 

Из книги автора

4. Символьные строки директива #define, функции printf( ) и scanf( )    В этой главе мы продолжим нашу "игру" с данными покопаемся в вопросах, выходящих за пределы тех, которые были связаны с типами данных, и рассмотрим символьную строку Сначала опи шем важное средство языка -


ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )

Из книги автора

ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )      Функции printf( ) и scanf( ) дают нам возможность взаимодействовать с программой. Мы называем их функциями ввода-вывода. Это не единственные функции, которыми мы можем воспользоваться для ввода и вывода данных с помощью


Применение функции scanf( ) 

Из книги автора

Применение функции scanf( )       Поскольку в дальнейшем мы будем пользоваться функция scanf( ) лишь эпизодически, мы рассмотрим здесь только основные особенности ее применения.      Так же как для функции printf( ), для функции scanf( ) указываются управляющая строка и следующий за


31.5. Функция ioctl

Из книги автора

31.5. Функция ioctl Говоря о потоках, мы снова возвращаемся к функции ioctl, которая уже была описана в главе 17.#include <stropts.h>int ioctl(int fd, int request, ... /* void *arg */ );Возвращает: 0 в случае успешного выполнения, -1 в случае ошибкиЕдинственным изменением относительно прототипа функции,