Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмический язык СИ++ Коковой.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
989.06 Кб
Скачать

1.5. Ввод и вывод информации

Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много).

Чтобы библиотечные функции стали доступны программе, к ней необходимо подключить данный файл. Подключение осуществляется с помощью директивы препроцессора, помещаемой в начало программы, например:

#include <stdio.h>

Эта библиотечная функция позволяет считывать по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). Она имеет следующий прототип (т.е. описание заголовка):

int getchar(void);

Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).

Оператор ввода имеет вид:

х = getchar( );

Переменной х присваивается очередной вводимый символ.

Другая функция – putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar( ) имеет прототип:

int putchar(int);

Объявления getchar( ) и putchar( ) сделаны в заголовочном файле stdio.h, содержащем описания заголовков библиотечных функций стандартного ввода/вывода.

Для функции getchar( ) после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства. Функции getch( ) и getche( ) устраняют их. Они имеют следующие прототипы:

int getch(void);

int getche(void);

Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche( ) отображает вводимый символ на экране дисплея, а getch( ) – нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include .

1.5.1. Форматированный ввод данных

Функция scanf( ) (прототип содержится в файле stdio.h, т.е. для использования scanf( ) необходимо подключить библиотечную функцию с помощью #include <stdio.h>) обеспечивает форматированный ввод данных. Ее можно записать в следующем формальном виде:

scanf("управляющая строка", аргумент_1, аргумент_2,...);

Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &.

Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. В нее могут включаться:

  • пробелы, символы табуляции и перехода на новую строку (все они игнорируются);

  • спецификации преобразования, состоящие из знака %, возможно, символа * (запрещение присваивания), возможно, числа, задающего максимальный размер поля, и самого символа преобразования;

  • обычные символы, кроме % (считается, что они должны совпадать с очередными неизвестными символами во входном потоке).

Рассмотрим символы преобразования функции scanf( ) (указываются после символа %):

      • с – на входе ожидается появление одиночного символа;

      • d или i – на входе ожидается десятичное целое число, и аргумент является указателем на переменную типа int;

      • D или l – на входе ожидается десятичное целое число, и аргумент является указателем на переменную типа long;

      • е или Е, f – на входе ожидается вещественное число с плавающей точкой;

      • о – на входе ожидается восьмеричное целое число, и аргумент является указателем на переменную типа int;

      • О – на входе ожидается восьмеричное целое число, и аргумент является указателем на переменную типа long;

      • s – на входе ожидается появление строки символов;

      • х – на входе ожидается шестнадцатеричное целое число, и аргумент является указателем на переменную типа int;

      • Х – на входе ожидается шестнадцатеричное целое число, и аргумент является указателем на переменную типа long;

      • р – на входе ожидается появление указателя в виде шестнадцатеричного числа;

      • n – применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции (после ввода), в которой записана спецификация %n;

      • u – на входе ожидается беззнаковое целое число, и аргумент является указателем на переменную типа unsigned int;

      • U – на входе ожидается беззнаковое целое число, и аргумент является указателем на переменную типа unsigned long;

      • [ ] – сканирует входную строку для получения символов [2].

Ввести целое число (int a;), символ (char b;) и вещественное число (float t;) можно так:

scanf("%d", &a);

scanf("%c", &b);

scanf("%d%c%f",&a, &b, &t);