Лекция №11

Содержание

Слайд 2

Файлы

Точного определения файла не существует.
Файлом может быть:
Объект файловой системы (файлы, папки и

Файлы Точного определения файла не существует. Файлом может быть: Объект файловой системы
т.д.)
Устройство ввода/вывода (клавиатура, принтер, дисплей)
Служебные объекты операционной системы
Функции для работы с файлами описаны в файле stdio.h

Слайд 3

Способы работы с файлами

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

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

Слайд 4

Потоковый ввод/вывод

Операции над потоковыми файлами:
Открытие файла
Чтение из файла (ввод из файла)
Запись в

Потоковый ввод/вывод Операции над потоковыми файлами: Открытие файла Чтение из файла (ввод
файл (вывод в файл)
Проверка достижения конца файла
Закрытие файла

Слайд 5

Открытие файла

FILE* fopen(char *name, char *mode);
name – имя файла
mode

Открытие файла FILE* fopen(char *name, char *mode); name – имя файла mode
– режим открытия файла
Возвращаемое значение: указатель на файловый тип или NULL, если произошла ошибка.

Слайд 6

Закрытие файла

Функция закрытия файла:
void fclose(FILE *fp);
fp – указатель на переменную файлового

Закрытие файла Функция закрытия файла: void fclose(FILE *fp); fp – указатель на
типа, связанную с открытым файлом
Пример:
void main() {
/* открываем файл 1.txt */
FILE *fp = fopen("1.txt", "r");
if (fp == NULL) {
printf("Ошибка открытия файла!");
return;
}
... /* производим какие-то действия над файлом*/
/* закрываем файл */
fclose(fp);
}

Слайд 7

Вывод в файл символа и строки

Запись символа в файл:
int fputc(int c,

Вывод в файл символа и строки Запись символа в файл: int fputc(int
FILE *fp);
c – символ, который необходимо записать
fp – файл, в который производится запись
Возвращаемое значение: записанный символ или EOF в случае ошибки записи.
Запись строки в файл:
int fputs(char* s, FILE *fp)
s – строка, которую необходимо записать в файл
fp – файл, в который производится запись
Возвращаемое значение: неотрицательное значение или EOF в случае ошибки записи.

Слайд 8

Вывод форматируемого текста в файл

int fprintf(FILE *fp, char* fmt, …);
fp

Вывод форматируемого текста в файл int fprintf(FILE *fp, char* fmt, …); fp
– файл, в который производится запись
fmt – форматная строка
... – форматируемые значения
Примечание: fprintf идентична функции printf с той лишь разницей, что в качестве первого параметра передается файл, в который необходимо вывести значения.

Слайд 9

Пример записи в файл

#include
void main()
{
/* открываем файл

Пример записи в файл #include void main() { /* открываем файл на
на запись */
FILE *fp = fopen("hello.txt", "w");
/* проверяем на ошибки */
if (fp == NULL) {
printf("Ошибка создания файла\n");
return;
}
/* записываем в файл строку */
fprintf(fp, "Hello, file world!\n");
/* закрываем файл */
fclose(fp);
}

Слайд 10

Чтение из файла

Чтение символа из файла:
int fgetc(FILE* fp);
fp – файл

Чтение из файла Чтение символа из файла: int fgetc(FILE* fp); fp –
Возвращаемое значение: считанный символ или EOF если произошла ошибка чтения или достигнут конец файла.
Чтение строки из файла:
char* fgets(char* line, int maxline, FILE* fp);
line – строка, в которую будет считана строка из файла
maxline – максимальная длина строки
fp – файл
Возвращаемое значение: считанная строка или NULL если произошла ошибка чтения или достигнут конец файла.

Слайд 11

Пример считывания строк из файла

Данный пример выводит на экран содержимое файла
#include

Пример считывания строк из файла Данный пример выводит на экран содержимое файла

void main()
{
char s[100]; /* считываемая строка */
FILE *fp = fopen("hello.txt", "r");
/* проверяем на ошибки */
if (fp == NULL) {
printf("Ошибка открытия файла\n");
return;
}
/* читаем построчно файл */
while (fgets(s, 100, fp) != NULL) {
/* выводим считанную строку на экран */
puts(s);
}
fclose(fp);
}

Слайд 12

Форматный ввод данных из файла

int fscanf(FILE* fp, char* fmt, …);
fp

Форматный ввод данных из файла int fscanf(FILE* fp, char* fmt, …); fp
– файл
fmt – форматная строка
… - указатели на переменные для ввода значений
Возвращаемое значение: количество успешно введенных элементов.
Примечание: fscanf идентична функции scanf с той лишь разницей, что в качестве первого параметра передается файл, из которого необходимо считывать значения.

Слайд 13

Стандартный ввод/вывод

В языке Си есть три преопределенных стандартных файла:
stdin – стандартный

Стандартный ввод/вывод В языке Си есть три преопределенных стандартных файла: stdin –
ввод (клавиатура)
stdout – стандартный вывод (дисплей)
stderr – вывод сообщений об ошибках (дисплей)
puts(<строка>) аналогично fputs(<строка>, stdout)
scanf(<формат>, …) аналогично fscanf(stdin, <формат>, …)
Недопустимо:
fputs(<строка>, stdin);
fgets(<строка>, <длина>, stdout);

Слайд 14

Дополнительные функции работы с файлами

Определение наличия ошибки в файле:
int ferror(FILE *fp)
fp

Дополнительные функции работы с файлами Определение наличия ошибки в файле: int ferror(FILE
– файл
Возвращает ненулевое значение, если при работе с данным файлом произошла ошибка.
Определение достижения конца файла:
int feof(FILE *fp)
fp – файл
Возвращает ненулевое значение, если достигнут конец файл.