Студопедия

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


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




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

Потоковый ввод-вывод.

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

Двоичный режим обмена с файлами.

Строковый обмен с файлами.

Режим форматного обмена с файлами.

Позиционирование в потоке.

Потоковый ввод-вывод.

Библиотека языка Си поддерживает три уровня ввода-вывода:

1. Потоковый ввод-вывод

2. Ввод-вывод нижнего уровня

3. Ввод-вывод для консоли и портов

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

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

При работе с потоком можно производить следующие действия:

· Открывать и закрывать потоки;

· Вводить и выводить данные;

· Анализировать ошибки потокового ввода-вывода и условие достижения конца потока (конца файла);

· Управлять буферизацией потока и размером буфера;

· Получать и устанавливать указатель (индикатор) текущей позиции в потоке.

 

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

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

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

#include <stdio.h>

FILE *fp ; /* объявлен указатель на поток *fp */

Указатель на поток приобретает значение в результате выполнения функции открытия потока:

fp=fopen (имя файла, режим открытия) ;

 

Например: fp=fopen (“my_text.txt”, “r”) ;

При выполнении функции fopen( ) происходит выделение динамической памяти.

Файл, связанный с потоком, можно открыть в одном из следующих режимов:

w” – новый текстовый файл открывается для записи. Если файл уже существовал, то предыдущее содержимое стирается, файл создается заново;

r” – существующий текстовый файл открывается только для чтения;

a” – текстовый файл открывается (или создается, если файла нет) для добавления в конец файла новой порции информации;

w+” – новый текстовый файл открывается для записи и последующих многократных исправлений. Если файл уже существует, то предыдущее содержимое стирается;

r+” – существующий текстовый файл открывается как для чтения, так и для записи в любом месте файла (однако в этом режиме невозможна запись в конец файла);

a+” – текстовый файл открывается или создается (если файла нет) и становится доступным для изменений (записи, чтения в любом месте). При этом можно открыть существующий файл, не уничтожая его содержимого; можно вести запись в конец файла, увеличивая его размеры.

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

Для вывода на экран монитора сообщения об ошибке при открытии потока может использоваться библиотечная функция perror( ):

if (( fp=fopen(“t.txt”,”w’))==NULL)

{

perror(“ошибка при открытии файла t.txt \n”);

}

Открытые на диске файлы после окончания работы с ними необходимо закрыть с помощью библиотечной функции:

int fclose (указатель на поток) ;

Открытый файл можно открыть повторно только после того, как файл будет закрыт с помощью функции fclose( ).


<== предыдущая страница | следующая страница ==>
Примечания | Режим форматного обмена с файлами

Дата добавления: 2015-06-30; просмотров: 206; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.