Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / лекции / lecture_04_files.ppt
Скачиваний:
16
Добавлен:
20.04.2015
Размер:
964.1 Кб
Скачать

Лекция 4

Файлы в Си (ANSI)

Файлы

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

Файл представляется потоком байтов.

В языке Си отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку <stdio.h>. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т.д.

В Си существует два типа файлов: текстовые (text) и двоичные (binary).

Текстовые и бинарные файлы

Текстовый файл — файл, содержащий текст, разбитый на строки при помощи некоторого разделяющего символа окончания строки или последовательности

вUnix — одиночный символ перевода строки;

вMicrosoft Windows за символом перевода строки следует знак возврата каретки:

0x0D 0x0A

13 10 в десятичной системе счисления .

Двоичный (бинарный) файл — файл, из которого байты считываются и выводятся в «сыром» виде без какого-либо связывания (подстановки).

Вчем отличия?

Вчем разница между звуковым файлом и картинкой?

Втом, что первый файл интепретируется с помощью специальной программы, как звук, а второй - как картинка.

Текстовый файл интепретируется как текст, а бинарный, как набор двоичных чисел.

В текстовом файле символ "\n" переводится в "\r\n" при записи в файл.

При считывании производится обратная замена: "\r\n" "\n" .

С бинарными файлами этого не происходит.

Описание файла

Логическое имя (дескриптор файла - int) – представляет собой указатель на файл, который используется операционной системой для поддержки операций с этим файлом.

Оно определяется так: FILE *fp;

FILE - имя типа, описанное в стандартном заголовочном файле <stdio.h>,

fp - указатель на файл.

Библиотечные функции, используемые при работе с файлами.

Функция fopen( ).

Прежде чем читать или записывать информацию в файл,

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

Прототип функции fopen():

FILE * fopen (cost char* name, cost char* mode );

Вслучае удачного открытия файла, функция fopen() возвращает дескриптор файла, иначе – константу NULL. Она определена в файле <stdio.h> и эквивалентно 0.

Функция fopen()

Обращение к функции fopen( ): fp = fopen(спецификация файла,

способ использования файла);

Спецификация файла (имя файла и путь к нему) может, например, иметь вид: "c:\\myprog.txt" - для файла myprog.txt на диске с:.

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

if ((fp = fopen("c:\\my_prog.txt", "rt")) == NULL){ fprintf(stderr, "Открыть файл не

удалось\n");

exit(1);

}

Функция freopen()

Функция freopen применяется для перенаправления файлов, обычно стандартных файлов stdin, stdout, stderr, stdaux, stdprn в файлы, определяемые пользователем.

FILE *freopen(const char *path, const char *mode, FILE *fp);

#include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp;

printf("Это сообщение появится на экране.\n");

if((fp=freopen("input.txt", "w", stdout))==NULL){ printf("Не удается открыть файл.\n");

exit(1);

}

printf("Это сообщение запишется в файл input.txt."); fclose(fp);

return 0;

}

const char* mode

Внекоторых операционных системах имеются различия в работе с текстовыми и бинарными файлами.

К таким системам относятся MS DOS и MS Windows.

Втаких системах при открытии бинарного файла к строке mode следует добавлять букву "b", а при открытии текстового файла – букву "t".

Кроме того, при открытии можно разрешить выполнять как операции чтения, так и записи; для этого используется символ + .

Порядок букв в строке mode следующий: сначала идет одна из букв "r", "w", "a", затем в произвольном порядке могут идти символы "b", "t", "+".

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

Всистеме Unix различий между текстовыми и бинарными файлами нет.

Способ использования файла

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

w - создать новый файл для записи (если файл с указанным именем существует, то он будет переписан);

а- дополнить файл (открыть существующий файл для записи информации, начиная с конца файла, или создать файл,

если он не существует);

r+ - открыть существующий файл для чтения и записи; w+ - создать новый файл для чтения и записи;

a+ - дополнить или создать файл с возможностью чтения и записи;

rb - открыть двоичный файл для чтения; wb - создать двоичный файл для записи; аb - дополнить двоичный файл;

r+b - открыть двоичный файл для чтения и записи; w+b - создать двоичный файл для чтения и записи; а+b - дополнить двоичный файл с предоставлением возможности чтения и записи

Соседние файлы в папке лекции