Lektsii_Tema_10_Funktsii_raboty_s_faylami.ppt
- Количество слайдов: 11
Информационные технологии Тема 10. Функции работы с файлами Шевченко А. В. Тема 10. Функции работы с файлами 1
Информационные технологии Понятие файла Файл данных Программа int data[2000]; char text[20000]; Файл данных struct X x[100]; . . . Файл данных Файл - именованный набор данных, хранимый во внешней памяти. Шевченко А. В. Тема 10. Функции работы с файлами 2
Информационные технологии Роль операционной системы Оперативная память Операционная система управляет размещением файлов на внешних носителях, а также доступом программ к ним. Процесс Таблица файловых дескрипторов Операционная система 0 1 2. . . Файл данных Буфер ввода-вывода Шевченко А. В. Тема 10. Функции работы с файлами 3
Информационные технологии Функции открытия и закрытия файла Доступ Текст программы FILE* inp; r w inp = fopen("file. txt", "r"); if(inp == NULL) Имя файла { Show. Message("Ошибка!"); }. . . a r+ w+ // Работа с данными a+ b t fclose(inp); Чтение. Запись. Если файл существует, он будет перезаписан. Добавление. Если файл не существует, то он будет создан. Открытие файла для чтения и записи. Создание нового файла для чтения и записи. Добавление с возможностью чтения. Двоичный файл Текстовый файл Перед выполнением операций чтения или записи файл должен быть открыт (связан с файловым дескриптором). После завершения ввода или вывода файл закрывается. Шевченко А. В. Тема 10. Функции работы с файлами 4
Информационные технологии Структура FILE (stdio. h) Текст заголовка typedef struct { unsigned char *curp; /* Current active pointer */ unsigned char *buffer; /* Data transfer buffer */ int level; /* fill/empty level of buffer */ int bsize; /* Buffer size */ unsigned short istemp; /* Temporary file indicator */ unsigned short flags; /* File status flags */ wchar_t hold; /* Ungetc char if no buffer */ char fd; /* File descriptor */ unsigned char token; /* Used for validity checking */ } FILE; Шевченко А. В. /* This is the FILE object Тема 10. Функции работы с файлами */ 5
Информационные технологии Позиционирование указателя Текст программы fseek(FILE* файл, long смещение, int привязка); long offset = ftell(FILE* файл); Привязка #define SEEK_SET #define SEEK_CUR Файл Указатель Шевченко А. В. Тема 10 Функции работы с файлами 1 #define SEEK_END rewind(FILE* файл); 0 2 При работе с файлом все операции чтения и записи осуществляются по указателю, который "продвигается" на размер блока данных. 6
Информационные технологии Чтение и запись Текст программы fread(void *ptr, int size, int n, FILE* файл); Адрес буфера Размер элемента Число элементов fwrite(void *ptr, int size, int n, FILE* файл); Функции fread и fwrite применяются для чтения и записи данных во внутреннем формате (так, как они представлены в программе). Шевченко А. В. Тема 10. Функции работы с файлами 7
Информационные технологии Чтение и запись по строкам Текст программы fgets(char *buf, int size, FILE* файл); Адрес буфера Размер буфера fputs(char *buf, FILE* файл); Функции gets и puts применяются для чтения и записи текстовых данных в файлах текстового формата. Шевченко А. В. Тема 10. Функции работы с файлами 8
Информационные технологии Форматные чтение и запись Текст программы fscanf(FILE* файл, char *format, . . . ); fprintf(FILE* файл, char *format, . . . ); int a = 10; Файл float b = 15. 3; char* c = "ABCDE"; fprintf(FILE* файл, "%03 d %6. 2 f %-3. 3 s", a, b, c); 010 15. 30 ABC Функции fscanf и fprintf применяются для чтения и записи неоднородных данных (числовых и символьных) в файлах текстового формата. Шевченко А. В. Тема 10. Функции работы с файлами 9
Информационные технологии Синхронизация буфера и файла Текст программы fflush(FILE* файл); Буфер ввода-вывода Файл ABC Функция fflush применяется для синхронизации буферов операционной системы и файлов (гарантирует что данные записаны в файл). Шевченко А. В. Тема 10. Функции работы с файлами 10
Информационные технологии Пример записи данных в файл Текст программы double x[] = {100. 25, 102. 34, 101. 73, 110. 18}; FILE* f 1 = fopen("Данные. dat", "wb"); fwrite(x, sizeof(x), 1, f 1); fclose(f 1); FILE* f 2 = fopen("Текст. txt", "w"); fputs("Строка 1", f 2); fputs("Строка 2", f 2); fputs("Строка 3", f 2); fclose(f 2); Шевченко А. В. Тема 10. Функции работы с файлами 11
Lektsii_Tema_10_Funktsii_raboty_s_faylami.ppt