- •Предисловие.
- •1. Введение.
- •1.1. История создания языка си.
- •1.2. Стандарты языка си.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •2.1 Процесс создания исполняемого файла.
- •2.2 Распределение памяти программы.
- •2.3 Некоторые основные понятия.
- •2.4 Данные.
- •2.5 Структура простой программы.
- •3. Определение размеров типов данных и объектов.
- •4. Строки и строковые константы.
- •5. Директива препроцессора # define.
- •6. Функции форматированного ввода – вывода.
- •6.1 Функция форматированного вывода printf().
- •6.2 Функция форматированного ввода scanf().
- •7. Операции и операторы.
- •7.1 Арифметические операции
- •7.4 Порядок выполнения операций.
- •8. Выражения и операторы
- •8.1 Выражения.
- •8.2 Операторы.
- •8.3 Составные операторы.
- •8.4 Преобразование типов.
- •8.5 Операция приведения типов.
- •9. Функции ввода и вывода символов.
- •9.1 Функции getchar() и putchar().
- •9.2 Функции getch() и getche().
- •9.3 Ввод и вывод последовательности символов.
- •9.4 Подсчет символов, вводимых с клавиатуры.
- •9.5 Вывод символов из вводимого с клавиатуры файла.
- •9.6 Переключение ввода-вывода данных.
- •10. Принятие решений.
- •10.1 Оператор если (if).
- •10.2 Оператор если - иначе (if else).
- •10.3 Множественный выбор на основе операторов if, else.
- •10.5 Приоритеты операций отношения.
- •10.6 Логические операции (and, or, not).
- •10.7 Операция условия ?:.
- •10.8 Множественный выбор на основе операторов switch, break, default.
- •11. Циклы.
- •11.1 Цикл пока (while).
- •11.2 Цикл для (for).
- •11.4 Операция запятая ,.
- •11.5 Цикл делай пока (do while).
- •11.6 Вложенные циклы.
- •11.7 Операторы выход из структуры (break), продолжение (continue), безусловный переход (to go).
- •Литература.
- •Оглавление.
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);
Существуют два способа написания программ, работающих с файлами.
-
Явное использование специальных функций, которые открывают и закрывают файлы и организуют чтение и запись данных.
-
Использование программы, спроектированной первоначально так, что данные в нее вводятся с клавиатуры и выводятся на экран, путем переключения ввода и вывода на другие информационные каналы (из файла в файл).
Второй способ (переключение ввода-вывода данных) обладает меньшими возможностями, чем первый, но зато гораздо проще в использовании. Операция переключения - это средство операционной системы (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, возврат], чтобы содержимое буфера пересылалось в программу.