Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

9.6 Переключение ввода-вывода данных.

Понятие ввода-вывода включает в себя:

  • функции, осуществляющие ввод-вывод данных;

  • данные, которые вводятся в программу и выводятся из нее;

  • устройства, с которых производится ввод и на которые осуществляется вывод данных.

Функции getchar(), getche(), getch() используются для ввода данных (символов, char) с клавиатуры (стандартный ввод по умолчанию).

Функция putchar() используется для вывода данных (символов, char) на экран дисплея (стандартный вывод по умолчанию).

В принципе, кроме стандартных устройств ввода-вывода, существует множество других устройств ввода-вывода (магнитная лента, телетайп, диск, flash-память, сеть). Все эти устройства можно рассматривать как файл (FILE).

Строго говоря, функции getchar() и putchar() функциями не являются, а представляют собой макросы, определенные в заголовочном файле stdio.h слtдующим образом:

#define getchar() getc(stdin)

#define putchar() putc((c), stdout)

Функции getc() и putc() имеют следующие прототипы:

int getc(FILE *stream);

int putc(int c, FILE *stream);

Существуют два способа написания программ, работающих с файлами.

  1. Явное использование специальных функций, которые открывают и закрывают файлы и организуют чтение и запись данных.

  2. Использование программы, спроектированной первоначально так, что данные в нее вводятся с клавиатуры и выводятся на экран, путем переключения ввода и вывода на другие информационные каналы (из файла в файл).

Второй способ (переключение ввода-вывода данных) обладает меньшими возможностями, чем первый, но зато гораздо проще в использовании. Операция переключения - это средство операционной системы (UNIX, DOS, WINDOWS), а не самого языка Си.

В предыдущем разделе 9.5 была рассмотрена программа get_put_file - ввод символов с клавиатуры до завершающего файл символа EOF и вывод символов, содержащихся в этом файле на экран дисплея. Можно переключить ввод данных (символов) в эту программу с клавиатуры на ввод данных (символов) из текстового файла file_inp.txt (в файле file_inp.txt содержится последовательность символов, оканчивающихся EOF). Для этого запустим файл get_put_file.exe с помощью командной строки:

get_put_file.exe <file_inp.txt

Можно переключить вывод данных (символов) из программы get_put_file.exe с дисплея на вывод данных (символов) в текстовый файл file_out.txt (в файле file_out.txt после окончания работы программы get_put_file.exe будет содержаться последовательность символов, оканчивающихся EOF). Для этого запустим файл get_put_file.exe с помощью командной строки:

get_put_file.exe >file_out.txt

Можно осуществить комбинированное переключение ввода-вывода. Для этого запустим файл get-put_file.exe с помощью командной строки:

get_put_file.exe <file_inp.txt >file_out.txt

или

get_put_file.exe >file_out.txt <file_inp.txt

ПРИМЕЧАНИЯ.

  • Знаки операций переключения < и > указывают на направление информационного потока.

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

  • Имя выполняемого файла должно стоять слева от знака операции переключения, имя фала (файлов) данных – справа от знака операции переключения.

  • Некоторые компиляторы с языка Си требуют наличия пробела слева от знака операции переключения и его отсутствия справа от этого знака.

  • Нельзя использовать в одной команде один и тот же файл для ввода и для вывода одновременно. Причина этого заключается в том, что это приводит к стиранию исходного файла перед его использованием в качестве входного.

  • Если функция getchar() используется в системе программирования, где есть буферизованный ввод, не забывайте оканчивать каждую введенную строку символом [Enter, возврат], чтобы содержимое буфера пересылалось в программу.