Скачать презентацию Операции с файлами 1 2 3 4 5 Скачать презентацию Операции с файлами 1 2 3 4 5

Работа с файлами.pptx

  • Количество слайдов: 24

Операции с файлами 1. 2. 3. 4. 5. Открытие файла Закрытие файла Чтение из Операции с файлами 1. 2. 3. 4. 5. Открытие файла Закрытие файла Чтение из файла Запись в файл Позиционирование в файлах произвольного доступа 1

1. Открытие файла #include <stdio. h> FILE *fopen( const char *filename, const char *mode); 1. Открытие файла #include FILE *fopen( const char *filename, const char *mode); filename – имя файла; нуль ограниченная строка; mode – режим использования файла; "x+z" В случае ошибки функция fopen возвращает значение NULL. 2

1. Открытие файла 1. Открытие файла "x+z" x – операция: r – для чтения, файл должен существовать; w – для записи в режиме пересоздания файла; a – для добавления в конец файла. Символ + – добавить противоположную операцию, например, "r+". 3

1. Открытие файла 1. Открытие файла "x+z" z – тип файла: t – текстовый файл, b – двоичный файл. Текстовый файл: обработка комбинации кодов возврат каретки – перевод строки 4

2. Закрытие файла int fclose(FILE *stream); stream – указатель, полученный в результате вызова функции 2. Закрытие файла int fclose(FILE *stream); stream – указатель, полученный в результате вызова функции fopen. При успешном завершении функция fclose возвращает значение 0, в случае ошибки – значение EOF. 5

3. Чтение из файла int fgetc(FILE * stream) stream – указатель на файл Результат 3. Чтение из файла int fgetc(FILE * stream) stream – указатель на файл Результат – код прочитанного символа или EOF при обнаружении конца файла int ungetc(int c, FILE *stream) stream – указатель на файл с – код последнего прочитанного из потока символа Возвращает символ c обратно в поток 6

3. Чтение из файла int fgets(char *string, int n, FILE *stream) stream – указатель 3. Чтение из файла int fgets(char *string, int n, FILE *stream) stream – указатель на файл string – указатель на область памяти n – размер области памяти Читает символы из файла в область памяти, в том числе символ новой строки. Прочитанная строка завершается нуль байтом 7

3. Чтение из файла size_t fread( void *buffer, size_t size, size_t count, FILE *stream 3. Чтение из файла size_t fread( void *buffer, size_t size, size_t count, FILE *stream ) – stream – указатель на файл buffer – указатель на область памяти count – количество читаемых блоков size – размер одного блока в байтах Возвращает количество блоков данных, успешно прочитанных из файла 8

3. Чтение из файла int fscanf(FILE *stream, const char *format, &arg 1. . . 3. Чтение из файла int fscanf(FILE *stream, const char *format, &arg 1. . . ) stream – указатель на файл format – строка формата arg 1. . . – список аргументов Ввод с редактированием из файла Аналогична функции scanf 9

4. Запись в файл int fputc( int c, FILE *stream ) stream – указатель 4. Запись в файл int fputc( int c, FILE *stream ) stream – указатель на файл c – код символа int fputs( const char *string, FILE *stream ) stream – указатель на файл string – указатель на строку символов Не добавляет в конец строки символ новой строки 10

4. Запись в файл size_t fwrite( const void *buffer, size_t size, size_t count, FILE 4. Запись в файл size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ) stream – указатель на файл buffer – указатель на область памяти count – количество записываемых блоков size – размер одного блока в байтах Возвращает количество блоков данных, успешно записанных в файл 11

4. Запись в файл int fprintf(FILE *stream, const char *format[, arg 1, . . 4. Запись в файл int fprintf(FILE *stream, const char *format[, arg 1, . . . ]) stream – указатель на файл format – строка формата arg 1. . . – список аргументов Вывод с редактированием в файл Аналогична функции printf 12

5. Позиционирование в файле long ftell(FILE * stream) stream – указатель на файл Возвращает 5. Позиционирование в файле long ftell(FILE * stream) stream – указатель на файл Возвращает смещение для текущего положения указателя чтения-записи относительно начала файла ф Начало файла а смещение й л учз 13

5. Позиционирование в файле int fseek(FILE * stream, long offset, int origin) stream – 5. Позиционирование в файле int fseek(FILE * stream, long offset, int origin) stream – указатель на файл offset – смещение нового положения указателя чтения-записи origin – позиция в файле, относительно которой задается смещение offset 14

5. Позиционирование в файле Значения origin: SEEK_SET – смещение отсчитывается от начала файла SEEK_CUR 5. Позиционирование в файле Значения origin: SEEK_SET – смещение отсчитывается от начала файла SEEK_CUR – смещение отсчитывается от текущего положения указателя чтениязаписи SEEK_END – смещение отсчитывается от конца файла 15

5. Позиционирование в файле int rewind(FILE *stream) stream – указатель на файл Устанавливает указатель 5. Позиционирование в файле int rewind(FILE *stream) stream – указатель на файл Устанавливает указатель чтения-записи на начало файла Эквивалентно fseek(fp, 0, SEEK_SET) 16

6. Пример программы Определить размер файла #include <stdio. h> int main() { FILE *fd; 6. Пример программы Определить размер файла #include int main() { FILE *fd; char fname[] = "files. c"; long size; fd = fopen(fname, "r"); 17

6. Пример программы } if(fd == NULL){ fprintf(stderr, 6. Пример программы } if(fd == NULL){ fprintf(stderr, "can't open file %sn", fname); return 1; } fseek(fd, 0, SEEK_END); size = ftell(fd); printf("File %s has %ld bytesn", fname, size); return 0; 18

7. Результаты тестирования File files. c has 309 bytes Для продолжения нажмите любую клавишу. 7. Результаты тестирования File files. c has 309 bytes Для продолжения нажмите любую клавишу. . . 19

8. Пример программы #include <stdio. h> int main() { FILE *fd; char fname[] = 8. Пример программы #include int main() { FILE *fd; char fname[] = "files. dat"; char inbuf[] = "data for testing"; char outbuf[20]; long size; 20

8. Пример программы fd = fopen(fname, 8. Пример программы fd = fopen(fname, "w+b"); if(fd == NULL){ fprintf(stderr, "can't open file %sn", fname); return 1; } 21

8. Пример программы printf( 8. Пример программы printf("size of data: %dn", sizeof(inbuf)); fwrite(inbuf, 1, sizeof(inbuf), fd); fseek(fd, 20, SEEK_CUR); fwrite(inbuf, 1, sizeof(inbuf), fd); fseek(fd, 0, SEEK_END); size = ftell(fd); printf("File %s has %ld bytesn", fname, size); 22

" src="https://present5.com/presentation/5594849_101470080/image-23.jpg" alt="8. Пример программы rewind(fd); printf("reading from filen"); while((size = fread(outbuf, 1, sizeof(outbuf), fd)) >" /> 8. Пример программы rewind(fd); printf("reading from filen"); while((size = fread(outbuf, 1, sizeof(outbuf), fd)) > 0) fwrite(outbuf, 1, size, stdout); printf("n"); return 0; } 23

9. Результаты тестирования size of data: 17 File files. dat has 54 bytes reading 9. Результаты тестирования size of data: 17 File files. dat has 54 bytes reading from file data for testing Для продолжения нажмите любую клавишу. . . 24