Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CCPP / C / Презентации / Язык программирования C-11.pdf
Скачиваний:
46
Добавлен:
23.03.2016
Размер:
273.62 Кб
Скачать

Модуль 11. Файлы

Структура типа FILE

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

Эта структура определяется в файле <stdio.h>.

Ее конкретная реализация системно зависима.

Ее поля заполняются и используются операционной системой.

Библиотечные функции для работы с файлами используют указатель на эту структуру (указатель на файл).

Файл предварительно должен быть открыт.

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

Освободившийся указатель можно использовать для открытия другого файла.

Количество одновременно открытых файлов системно-зависимо.

5

Модуль 11. Файлы

Открытие и закрытие файлов

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

открывает файл с именем filename и возвращает указатель на связанный с этим файлом поток или NULL при ошибке;

строка mode задает способ доступа к файлу и тип потока (текстовый или бинарный):

r w a

-открыть только для чтения;

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

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

r+ -

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

w+ -

создать новый файл для чтения и записи;

a+ -

открыть (или создать, если не существует) для

 

 

чтения/записи в конце файла .

6

Модуль 11. Файлы

Открытие и закрытие файлов (продолжение)

для указания типа потока к способу доступа добавляется символ t (текстовый) или b (бинарный), например,

wt, a+b и т.д.

Если t или b не указаны, то тип потока по умолчанию задается значением глобальной переменной _fmode,

которая может иметь значение O_TEXT или O_BINARY

int fclose( FILE *fp );

закрывает указанный файл поток), предварительно опустошив его буфер;

возвращает 0 при успешном завершении и EOF при ошибке.

int fcloseall( void );

закрывает все файлы (потоки), кроме предопределенных,

возвращает число закрытых потоков или EOF при ошибке.

7

Модуль 11. Файлы

Операции ввода-вывода

int fgetc(FILE *stream);

int fputc (int ch, FILE *stream);

int ungetc(int ch, FILE *stream);

int getw(FILE *stream);

int putw(int w, FILE *stream);

char *fgets(char *string, int n, FILE *stream);

int fputs(const char *string, FILE *stream);

int fscanf (FILE *stream, const char *format,...);

int fprintf(FILE *stream, const char *format,...);

size_t fread (void *ptr, size_t size, size_t n,

FILE *fp );

size_t fwrite(void *ptr, size_t size, size_t n,

FILE *fp );

8