Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и языки программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
53.75 Кб
Скачать

9.Организация работы с файлами. Функции работы с файлами в языке с.

Файл – совокупность данных, которые размещены на внешнем носителе. Функции, которые используются для работы с файлом находятся в библиотеке fstream.h. Для обработки файла нужно его открыть, выполнить необходимые действия и закрыть.

Стандартные операции работы с файлами, существующие практически во всех реализациях Си, хранятся в библиотеке stdio.h. Функция открытия файла называется fopen(). Она возвращает указатель на объект стандартного (определенного в данной библиотеке) типа FILE.

Параметров у функции fopen() два. Первый -- это путь к файлу (строка), второй -- параметры открытия файла. Допустим, мы хотим создать в текущем каталоге проекта новый текстовый файл и записать в него два числа и строку. Пусть этот файл будет называться test.txt. Параметр открытия файла на запись в текстовом виде записывается строкой "wt". Буква w означает write (писать), буква t -- text (текст). Если такой файл в каталоге существует, он перезаписывается (все старое содержимое в нем уничтожается), если он не существует, то создается исходно пустым.Тогда команда открытия (создания пустого) файла запишется так:

FILE * fo; fo = fopen("test.txt","wt");

Можно задать и полный путь к файлу, например: fo = fopen("c:\\tmp\\test.txt","wt");

Закрывается файл с помощью функции fclose(): fclose(fo);

После закрытия файла к файловой переменной обращаться уже нельзя.

Запись текстовой строки в файл выполняет функция fprintf(): fprintf( имя-файловой-переменной, формат, список-переменных-для-вывода );

Для ввода данных (текстовой строки) используют функцию fscanf(): fscanf( файловая-переменная, формат-ввода, список-адресов-переменных )

При вводе список адресов переменных отличается от списка имен переменных. Если в Си указывается имя переменной, то подразумевается значение этой переменной. Но при вводе нужно не значение, а местонахождение области в памяти, отведенной для заданной переменной - чтобы в эту область поместить новое значение, считанное из файла. Операция &, примененная к имени переменной, возвращает адрес этой переменной в памяти. Тогда операцию ввода числа из текстового файла fi в целочисленную переменную n можно записать так: fscanf( fi, "%d", &n );

Формат записывается также, как и в случае с fprintf, а вот перед именем переменной n дополнительно указывается операция получения адреса &. Полезная функция feof(файловая-переменная) возвращает 1 (истинное значение), если файл, открытый для считывания, закончился. Она возвращает 0, если из файла еще можно продолжать ввод.

Пример:

#include <conio.h>

#include <stdio.h>

int main()

{ int bal;

char name[15];

FILE *file;

if ((file = fopen("1.txt","w")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{

for(;;){

scanf ("%d%s", &bal, name);

if (bal == 0)

break;

fprintf(file,"%d %s\n", bal, name); } }

fclose(file);

return 0;}

fprintf(file,"%d %s\n", bal, name); оператор записывает данные в файл. Принцип действия тот же, какой и у оператора printf, только тут в начале указывается указатель на файл в который будет производится запись данных.