Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiS.doc
Скачиваний:
81
Добавлен:
13.04.2015
Размер:
815.1 Кб
Скачать

11 Ввод и вывод

11.1 Разновидности ввода и вывода

Средства ввода и вывода формально не входят в стандарт языков С и С++, но фактически стандартизованы и содержатся в системных библиотеках функций.

В них можно выделить следующие группы:

1) консольные — ориентированы на ввод с клавиатуры и вывод на дисплей. Описаны в заголовочном файле conio.h.

2) файловые — предназначены для работы с файлами. Описаны в io.h.

3) потоковые — аналогичны файловым, но предоставляют больший сервис программисту. Описаны в stdio.h.

4) средства ДОС — ввод и вывод функциями операционной системы. Описаны в dos.h.

5) объектные — объектно-ориентированный ввод/вывод, только в С++. Описаны в iostream.h, fstream.h, iomanip.h.

В данном разделе мы ознакомимся с 3-й группой — потоковым вводом и выводом.

11.2 Открытие и закрытие потока

Схема работы с потоком такая же, как и с файлом: открыть поток, выполнить чтение и/или запись, закрыть поток.

Открывает поток функция

FILE* fopen(

const char *filename,// имя файла, ассоциированного с потоком

const char *mode // строка режимов работы с потоком

) — возвращает указатель на поток, который идентифицирует его в последующих операциях.

В строке режимов могут находиться следующие символы:

r — открыть только для чтения.

w — создать для записи. Существующий файл будет перекрыт новым.

a — открыть для дозаписи, или создать для записи, если файл не существует.

+ — операции будут выполняться с уже существующим файлом.

t — текстовый режим (обработка символов CR-LF).

b — двоичный режим (никакой обработки).

При отсутствии в строке b или t, режим определяется глобальной переменной _fmode, определенной в заголовочном файле fcntl.h.

FILE — это управляющая структура для потока, объявленная в stdio.h. Она не предназначена для прямого использования.

Поток является программной надстройкой над файлом, предоставляющей программисту дополнительный сервис. Помимо совместного открытия потока и файла (fopen), можно открыть поток и ассоциировать его с уже открытым файлом (fdopen), открыть файл и ассоциировать его с уже открытым потоком (freopen).

Закрывает поток и выгружает буферы функция

int fclose(FILE *stream ) — возвращает 0 при успехе и EOF при ошибке.

EOF — константа, определенная в stdio.h.

int fcloseall(void) — закрывает все открытые потоки, кроме стандартных: stdin, stdout, stdprn, stderr и stdaux.

11.3 Ввод и вывод символов

Чтение символа из потока выполняется функцией

int fgetc(FILE *stream) — возвращает код символа. При ошибке возвращает EOF.

Запись символа в поток выполняется функцией

int fputc(int c, FILE *stream) — возвращает код символа c. При ошибке возвращает EOF.

Чтение символа из стандартного потока stdin выполняется функцией int fgetchar(void);

Запись символа в стандартный поток stdout выполняется функцией

int fputchar(int c);

З а д а ч а. Скопировать файл xxx.bin в файл yyy.bin.

Р е ш е н и е.

#include <stdio.h>

void main(){

FILE *in = fopen (“noname00.cpp”,”rt”);

FILE *out = fopen (“noname00.000”,”wt”);

if (!in) return;

while (!feof(in))

fputc(fgetc(in), out);

fcloseall();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]