Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функция ввода символьной строки scanf( )

Функция ввода символьной строки gets()

Функции ввода символьной строки

Ввод строки можно осуществлять с помощью функций gets() и scanf().

Функция gets() предназначена только для ввода символьных строк.

Функция имеет следующую структуру

сhar* gets(АС);

где АС – указатель на символьную строку, определяющий адрес для ввода строки.

Функция считывает с клавиатуры строку символов и помещает ее в оперативную память, начиная с адреса АС. Длина строки заранее неизвестна, но при этом не должна превышать числа ячеек, отведенных для хранения. Функция gets() завершает ввод строки при нажатии клавиши <Enter>. Функция не включает символ клавиши <Enter> в состав символьной строки и автоматически добавляет вместо него символ конца окончания ‘\0’.

При успешном завершении функция возвращает адрес строки или значение NULL в случае ошибки.

Например,

#include <stdio.h>

main()

{

char name[40]; /* выделение памяти под строку */

printf(“Как Вас зовут? \n”); /* запрос на ввод */

gets(name); /* ввод и размещение имени в массив name */

printf(“Ваше имя: %s.\n”, name); /* вывод строки */

}

Программа введёт любое имя (включая пробелы). При этом пользователь обязан следить, чтобы длина имени не превышала 39 символов.

Аргументом функции, согласно описанию, является указатель. В нашем случае используется имя массива name, которое является указателем типа константа.

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

Функция gets() принимает все символы, включая символы пробелов и знаков табуляции, до тех пор, пока не встретит символ ввода <Enter>.

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

Если используется формат спецификатора %s, то окончание строки определяется по первому встретившемуся пустому символу (пробел, знак табуляции, <Enter>).

Если используется формат %s с указанием размера поля, например, %6s, то функция scanf() считает не более 6 символов или до первого пустого символа (пробел, знак табуляции, <Enter>), если он встретится раньше.

Например, при вводе символьной строки «Операционные системы» с использованием функции gets

char n1[15];

gets(n1);

printf(“%s”, n1);

вся строка будет введена полностью:

Операционные системы <Enter>

Операционные системы

а при использовании функции scanf

char n1[15];

scanf(“%s”, n1);

printf(“%s”, n1);

будет введена часть строки, до первого символа пробел:

Операционные системы <Enter>

<== предыдущая лекция | следующая лекция ==>
Выделение памяти | Преобразование символьных строк
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 329; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.