Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Внимание! Внимание! Внимание! Внимание! Нежелательное отклонение параметров среды.

У вас есть 30 секунд, чтобы покинуть помещение.

Глава 5

ВВОД В СИ/СИ++

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

Ввод данных — это процесс, который определяет всю дальнейшую работу программы. Достоверность по- лучаемых от программы результатов не может быть больше, чем достоверность вводимой в нее информа- ции. Как говорится, чистый вход— чистый выход. Если введенные в программу данные были ошибочными, все полученные результаты тоже окажутся неверными.

В этой главе мы подробно рассмотрим ввод данных с клавиатуры. В главе 12 вы узнаете, как программа берет данные из дискового файла.

Рис. 5.1. Откуда бы ни поступали данные,компьютер хранит их в памяти как переменные

Данные вводятся только как значения переменных, но не констант. Константы всегда сохраняют присво- енные им начальные значения. Когда вы вводите в переменную некоторые данные, они помещаются в отведенную для этой переменной область памяти. Если переменной уже присвоено какое-то значение, новая информация заместит прежнюю, уничтожив ее (рис.5.2).

Рис. 5.2. При вводе данных прежнее значение переменной теряется

Функция gets()

Функция gets() вводит строку в переменную. Параметром функции является имя переменной. Рассмотрим такую программу:

main()

{

char name[15]; gets(name); puts(name);

}

Функция gets() будет рассматривать первые 14 символов, введенные с клавиатуры, как значение строко- вой переменной с именем name. Вы помните, что Си отводит строковой переменной столько элементов памяти, сколько указано в максимальном значении при определении переменной, а так как один элемент необходим для нулевого символа (\0), реально можно ввести на один символ меньше. Если вы хотите вве- сти в переменную name строку, состоящую из 15 символов, то укажите в квадратных скобках максималь- ное значение 16:

char name[16];

На время работы функции gets() выполнение программы приостанавливается. Она ждет, пока пользова- тель что-то напечатает. Для того чтобы напечатанные данные стали значением переменной, после ввода информации надо нажать клавишу Enter. Как только это сделано, строка, введенная пользователем, при- сваивается переменной в качестве значения, а курсор переходит на следующую строку на экране. При нажатии Enter Си добавляет в строку нулевой символ.

Рассмотрим более подробный пример:

main()

{

char name[25];

printf("Пожалуйста, введите Ваше имя: "); gets(name);

printf("Подтвердите, Ваше имя: %s", name);

}

Когда программа будет выполняться, вы увидите на экране подсказку:

Пожалуйста, введите Ваше имя:

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

Пока вы печатаете имя, символы отображаются на экран в режиме эха. Если вы допустите ошибку, ее можно исправить до того, как нажата клавиша Enter, уничтожив неправильные символы клавишей Backspace и напечатав новые. В некоторых системах можно использовать клавишу Esc для того, чтобы удалить все введенные символы и начать процедуру заново.

После нажатия клавиши Enter Си присваивает введенные символы переменной name и вставляет нулевой символ в конце строки. Затем программа переходит к выполнению второй функции printf() и на экране появляется вторая надпись (предположим, что вас зовут Петр Иванов):