Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по ПОА 2012.doc
Скачиваний:
7
Добавлен:
08.11.2019
Размер:
257.02 Кб
Скачать

Лабораторная работа №4 Работа с файлами

Цели работы:

  • познакомиться с возможностями по обработке текстовых файлов;

  • освоить основы работы с двоичными файлами.

Краткие сведения о работе с файлами с использованием библиотеки stdio

Для работы с внешним файлом на диске в программе требуется объявить файловую переменную: FILE файловый указатель, например: FILE *f;

Открытие файла выполняет функция fopen(), которая возвращает переменную типа FILE. Вся дальнейшая работа с файлом выполняется с использованием файлового указателя.

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

Первый параметр – имя файла

Второй параметр – режим открытия файла:

“r” – открывает текстовый файл для чтения

“w” – открывает текстовый файл для записи

и др.

Если файл открыть не удалось, возвращается пустой указатель – NULL. Пример:

FILE *f; //файловый указатель

f = fopen(“c:\\autoexec.bat”,”r”); //открыть файл для чтения

if (f==NULL) //если не открылся, выводим сообщение об ошибке

{

printf(“Error\n”);

};

Закрытие файла выполняется функцией fclose. Пример: fclose(f);

Функция feof() позволяет узнать, достигнут ли конец файла. Пример:

while(!feof(f))

{

//читаем из файла

}

Чтобы прочитать из файла один символ, используется функция fgetc:

int fgetc(FILE *stream);

Пример:

char c = fgetc(f);

Чтобы прочиать из файла строку символов, используется функция fgets:

char *fgets(char *str, int num, FILE *stream);

Функция читает из файла строку символов и помещает её в переменную str. Символы читаются до тех пор, пока не будет достигнут символ новой строки или конец файла или не будет прочитано (num-1) символов. В переменной str за последним прочитанным символом помещается нулевой символ.

Пример:

char str[256];

fgets(str,256,f);

printf(“str=%s\n”,str);

Функция fprintf выполняет форматированный вывод в файл. Аналогична функции printf:

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

Пример:

char s[]=”строка”;

int len = strlen(s); //длина строки s

fprintf(f,”длина строки ‘%s’ = %d”,s,len);

Примеры программ

1. Пример обработки текстового файла – копирование строк из одного файла в другой

#include <stdio.h>

#include <conio.h>

main()

{FILE *fin,*fout;

if (fin=fopen("binfile.cpp","r"))

{ char s[100];fout=fopen("b1.cpp","w");

while (fgets(s,100,fin)) {puts(s);fputs(s,fout);}

} else puts("error");

fclose(fout);

getch();return 0;

}

2. То же самое, но демонстрируются функции fprintf, fscanf

#include <stdio.h>

#include <conio.h>

main()

{FILE *fin,*fout;

if (fin=fopen("binfile.cpp","r"))

{ char s[100];fout=fopen("b1.cpp","w");

while (fscanf(fin,"%s",s)!=EOF) {printf("%s\n",s);fprintf(fout,"%s\n",s);}

} else puts("error");

fclose(fout);

getch();return 0;

}

3. Пример обработки двоичного файла – заполнение его значениями 0 1 2 … 9 и вывод их в обратном порядке

#include <stdio.h>

#include <conio.h>

main()

{FILE *f; f=fopen("a.dat","w+b"); int i;

for (i=0;i<10;i++) fwrite(&i,sizeof(int),1,f);

fseek(f,0,0); int x;

for (i=9;i>0;i--) {fseek(f,i*sizeof(int),0);fread(&x,sizeof(int),1,f); printf("%d ",x);}

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]