КАТЕГОРИИ: Архитектура-(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; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |