Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rudenko_c_tasks.doc
Скачиваний:
54
Добавлен:
12.11.2019
Размер:
666.62 Кб
Скачать
      1. Ввод-вывод

Поток - это источник или получатель данных; его можно связать с диском или каким-либо другим внешним устройством. Библиотека поддерживает два вида потоков: текстовый и бинарный.

Текстовый поток - это последовательность строк. Каждая строка имеет нуль или более литер и заканчивается литерой ‘\n’.

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

В UNIXе эти виды потоков не различаются.

Поток соединяется с файлом или устройством посредством его открытия; эта связь разрывается при закрытии потока. Открытие файла возвращает указатель на объект типа FILE, который содержит всю информацию, необходимую для управления этим потоком. Если не возникает двусмысленности, далее будем использовать термины «файловый указатель» и «поток» как равнозначные.

Когда программа начинает работу, уже открыты три потока: stdin, stdout и stderr.

Все приведенные ниже функции, связанные с вводом-выводом, определены в головном файле <stdio.h>.

        1. Операции над файлами

FILE *fopen ( const char *filename, const char* mode )

функция fopen открывает файл с заданным именем и возвращает указатель на файл или NULL, если файл не удалось открыть.

Допустимые значения режима:

«r» текстовый файл открывается для чтения

«w» текстовый файл создается для записи; старое содержимое (если оно было) удаляется

«a» текстовый файл открывается или создается для записи в конец файла

«r+» текстовый файл открывается для исправления (т.е. для чтения и записи)

«a+» текстовый файл создается или открывается для исправления уже существующей информации и добавления новой в конец файла

Режим «исправления» позволяет читать и писать в один и тот же файл; при переходах от операции чтения к операции записи и обратно нужно вызывать функцию fflush либо функцию позиционирования файла. Если значение режима дополнить буквой b (например, «rb» или «a+b»), то это будет означать, что файл бинарный.

FILE *freopen ( const char *filename, const char* mode, FILE *stream)

функция freopen открывает файл с указанным режимом и связывает его с потоком stream. Она возвращает stream или, в случае ошибки, NULL. Обычно функция freopen используется для замены файлов, связанных с stdin, stdout или stderr, другими файлами.

int fflush ( FILE *stream)

если функцию fflush применить к потоку вывода, то происходит дозапись всех оставшихся на буфере (еще не записанных ) данных. Для потока ввода эта функция не определена. Функция возвращает EOF, если во время записи возникла ошибка, и нуль в противном случае. Обращение вида fflush (NULL) выполняет указанные операции для всех потоков вывода.

int fclose ( FILE *stream)

функция fclose производит дозапись еще не записанных буферизованных данных, сбрасывает непрочитанный буферизованный ввод, освобождает все автоматически запрошенные буфера, после чего закрывает поток. Возвращает EOF в случае ошибки и нуль в противном случае.

int remove(const char *filename)

функция remove удаляет файл с указанным именем; последующая попытка открыть файл с таким именем вызовет ошибку. Возвращает ненулевое значение в случае неудачной попытки.

int rename(const char *oldname, const char* newname)

функция rename заменяет старое имя файла oldname новым newname; если попытка изменить имя оказалась неудачной, то возвращает ненулевое значение, в противном случае - нуль.

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