русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Четыре этапа работы с файлами


Дата добавления: 2013-12-23; просмотров: 3578; Нарушение авторских прав


Какие бы действия с файлами мы ни совершали бы, необходимо выполнить четыре обязательных этапа:

Первый этап – определить указатель на файл.

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

Файловая структура определена как тип данных – FILE в системном файле stdio.h.

Пример 10. Определение указателя на файл

#include <stdio.h>

FILE *file_pointer; //указатель на файл

После такого определения выделяется память под переменную с именем file_pointer. Если необходимо использовать одновременно несколько файлов, нужны указатели для каждого из них.

Например, если необходимо скопировать содержимое одного файла в другой, определяются два указателя на файл.

FILE *infile, *outfile;

Второй этап – открыть файл (функция fopen()).

На этом этапе устанавливается связь между именем файла и определенным ранее указателем на файл, также задается режим доступа к файлу. Режим доступа определяет, к какому файлу осуществляется доступ: к текстовому или двоичному, а также способ доступа – чтение или запись.

В общем виде функция fopen() выглядит следующим образом:

fp = fopen(“имя файла”, “режим доступа к файлу”);

Здесь fp – указатель на файл.

Ранее говорилось о возможности работы с двумя типами данных – текстовым и двоичным. О каких же данных идет речь в таблице 3?

Можно явно указать тип при открытии файла, для этого к обозначению режима доступа следует добавить:

b – для двоичного файла,

t - для текстового файла.

По умолчанию работа идет с текстовыми файлами.

Пример 11. Работа с двумя текстовыми и одним двоичным файлом.

fopen(“c:\\my_prog1.txt”, “r”); //текстовый файл – для чтения

fopen(“c:\\my_prog2.txt”, “w+”); //текстовый файл – чтение / запись



fopen(“c:\\my_prog3.txt”, “wb+”); //двоичный файл – чтение / запись

 

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

Пример 12. Контроль ошибок при открытии файла

#include <stdio.h>

FILE *fp;

if (fp= fopen(“c:\\ prog.txt”, “r”) ==NULL)

{puts (“Otkrit’ file ne ydaloc’ \ n”);

// аварийное завершение программы

exit(1);

}

Третий этап – работа с данными файла (чтение / запись).

Применяются библиотечные функции для работы с данными текстового файла (все они описаны в файле stdio.h) – см. таблицу 4

Таблица 4

Потоковая функция или макрокоманда Назначение
fopen Открывает поток для чтения и (или) записи
fclose Закрывает поток
fread Читает блок данных из потока
getc, fgetc Читает символ из потока
fgets Читает строку текста из потока
fscanf Читает форматированные данные из потока
fwrite Записывает блок данных в поток
putc, fputc Записывает символ в поток
fputc Записывает строку текста в поток
fprintf Записывает форматированные данные в поток
fseek Перемещает указатель позиции в потоке
ftell Возвращает текущую позицию в потоке. Возвращаемое значение – это смещение относительно начала потока (в байтах)
feof Макрокоманда, которая возвращает ненулевое значение, если в данном потоке обнаружен символ конца файла, в противном случае – нулевое значение
ferror Макрокоманда, возвращающая признак ошибки (0 – если ошибки не обнаружено, ненулевое значение в случае ошибки)
clearer Макрокоманда, сбрасывающая флаг наличия ошибок в данном потоке
fileno Макрокоманда, возвращающая дескриптор данного потокового файла

 

Четвертый этап – закрыть файл (функция fclose())

После окончания работы с файлом он должен быть закрыт.

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

Прототип функции

int fclose(FILE *fp);

Пример 13. Посимвольное чтений файла и вывод его на экран

#include <stdio.h>

void main()

{ FILE *in; //создаем указатель на файл

int ch;

//открываем Text для чтения, проверяя, существует ли он

if ((in = fopen(“Text”, “r”)!=NULL)

//указатель in ссылается на Text

{ while ((ch=getc(in)) != EOF) //получаем очередной символ

putc (ch, stdout); // вывод ch на экран (в стандартный поток вывода)

fclose (in); //закрываем файл

}

else printf(“File ne moget bit’ otkrit \n”)’

}.

 

Пример 14. Скопировать каждый пятый символ из файла Text в файл Text5

#include <stdio.h>

void main()

{char ch;

int count = 0; //счетчик символов

FILE *f_in, *f_out;

if ((in = fopen(“Text.txt”, “r”)!=NULL) //открыть файл для чтения

{f_out = fopen(“Text5.txt”, “w”); //открыть файл для записи

while ((ch=fgetc(f_in)) != EOF) //чтение символа из файла

if (count++ % 5 ==0)

fputc (ch, f_out); //запись символа в файл

fclose(f_in); //закрыть файлы

fclose(f_out);

}

else printf (“File ne otkrit! \n”); //обработка ошибки

}

 



<== предыдущая лекция | следующая лекция ==>
Чтение и запись строк | Файловые функции обработки строк


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.26 сек.