Файл – совокупность данных, которые размещены на внешнем носителе. Функции, которые используются для работы с файлом находятся в библиотеке 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, только тут в начале указывается указатель на файл в который будет производится запись данных.