Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Процедурные средства ввода-вывода.






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

Для использования данных, находящихся в др.файле его необходимо открыть. В момент открытия файла ОС выделяет спец.области памяти – системный буфер – участок ОЗУ, который исп-ся для обмена данными между программой и открытым файлом. Одновременно в одной работающей программе может быть открыто неск.файлов.

Каждому открытому файлу система присваивает номер – дескриптор, по к-ому происходит различение файлов. По завершении работы с данными его необходимо закрыть. При закрытии файла регистрируется его имя в каталоге, дата, время создания, очищает системные буфера, если не закрыть файл, то данные потеряются. При нормальном завершении работы программы все открытые файлы автоматически закрываются.

Во время работы с файлом с ним связывается указатель текущей позиции. Все операции считывания и записи данных из файла вып-ся с указателя, причем во время считывания УК-ль текущей позиции перемещается на величину считываемой либо записанной информации. Конец файла обозначается спец.именем EOF. Во всех ЯП существует ф-ия для управления положением указателя текущей позиции.

Средства языка Си для работы с внешними файлами представляют собой набор библиотечных ф-ий. Их прототипы нах-ся в stdio.h.

1) ф-ии верхнего уровня(потоковые)

2) ф-ии нижнего уровня(дескрипторные)

3) консольного ввода-вывода.

Режимы открытия файла: текстовый, двоичный.

В текстовом режиме происходит трансформация: ‘\n’ CR #10(возврат каретки); LF #13(перевод строки). В двоичном режиме трансформации не происходит.

Открытие файла средствами языка СИ:

В момент открытия файла в программе образуется специальная структура, которая построена след.образом:

struct FILE

{< информация об открытом файле> };

FILE *fp; - имя файловой переменной, указатель на открытый поток.

Для открытия файла есть спец. ф-ия, возвращаемое значение которой FILE*:

FILE *fopen(const char *filename, const char*mode); //открывает файл с именем filename в режиме открытия mode, возвращает указатель на открытый поток.

Но процедура открытия не всегда может завершиться успешно, тогда ф-ия возвращает NULL, поэтому обязательна след.схема открытия:

FILE *f;

If((f=fopen(“data.dat”, “r”))==NULL)

{

perror(“error data.dat”);

exit(1);

}

Ф-ия закрытия файла:

int fclose(FILE *stream); //закрывает поток с именем stream. Если не удалось успешно закрыть, то возвращаемое значение EOF.

Пример: fclose(fp);

int fcloseall(); //закрыть все открытые потоки, кроме стандартных.

Режимы открытия файла: r(открыть только для чтения), w(открыть только для записи), a(открыть файл для добавления данных в его конец), r+(открыть файл для обновления, доступен для чтения и для записи), w+(открывается файл для чтения и записи), а+(открыть для обновления, а также для чтения и записи), b(открыть файл в двоичном режиме), t(открыть файл в текстовом режиме).

 

Поток – файл вместе с предоставленными ему средствами буферизации.

Стандартные потоки ввода-вывода:

1)stdin – станд.поток ввода

2)stdout – станд.поток вывода

3)stderr – станд.поток вывода сообщений об ошибках

4)stdaux – станд.доп.поток

5)stdprn – станд.поток вывода (связан с принтером)

Библиотечные функции для работы с содержимым файлов делятся на:

1)посимвольного в/в

2)построчного в/в

3)форматированного в/в

4)поблочного в/в

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.