fwrite(адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);
Например,
fwrite(&dat, sizeof(int), 1, f);
Чтение из файла
fread(адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);
Например,
fread(&dat, sizeof(int), 1, f);
Закрытие файла
fclose(имя логического файла);
Пример 1. Заполнить файл некоторым количеством целых случайных чисел.
/* Заполнить файл некоторым количеством целых случайных чисел. */
/* Dev-C++ */
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
FILE *f; int dat;
srand(time(0));
int n=rand()%30 + 1;
cout << "File name? ";
char s[20];
cin.getline(s, 20);
f=fopen(s, "wb");
for (int i=1; i<=n; i++)
{ dat = rand()%101 - 50;
cout << dat << " ";
fwrite(&dat, sizeof(int), 1, f);
}
cout << endl;
fclose(f);
system("PAUSE");
return EXIT_SUCCESS;
}
Пример 2. Найти сумму и количество целых чисел, записанных в бинарный файл.
/* Найти сумму и количество целых чисел, записанных в бинарный файл. */
/* Dev-C++ */
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
FILE *f;
int dat, n=0, sum=0;
cout << "File name? ";
char s[20];
cin.getline(s, 20);
f=fopen(s, "rb");
while (fread(&dat, sizeof(int), 1, f))
{n++;
cout << dat << " ";
sum+=dat;
}
cout << endl;
cout << "sum: " << sum << "; number: " << n << endl;
fclose(f);
system("PAUSE");
return EXIT_SUCCESS;
}
Пример 3. Поместить в файл n записей, содержащих сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса.
/* Поместить в файл n записей, содержащих сведения о кроликах, содержащихся в хозяйстве:
пол (m/f), возраст (в мес.), масса. */
/* Dev-C++ */
#include <cstdlib>
#include <iostream>
using namespace std;
struct krolik {char pol; int vozrast; double massa;};
int main()
{
FILE *f; krolik dat; int n;
cout << "File name? ";
char s[20];
cin.getline(s, 20);
f=fopen(s, "wb");
cout << "How many rabbits? "; cin >> n;
for (int i=1; i<=n; i++)
{ cout << "What sex " << i << "th rabbit? "; cin >> dat.pol;
cout << "How old " << i << "th rabbit? "; cin >> dat.vozrast;
cout << "What is the mass of the " << i << "th rabbit? "; cin >> dat.massa;
fwrite(&dat, sizeof(krolik), 1, f);
}
fclose(f);
system("PAUSE");
return EXIT_SUCCESS;
}
Пример 3 (продолжение). В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса. Найти наиболее старого кролика. Если таких несколько, то вывести информацию о том из них, масса которого больше.
/* В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса.
Найти наиболее старого кролика. Если таких несколько, то вывести информацию о том из них, масса которого больше. */
/* Dev-C++ */
#include <cstdlib>
#include <iostream>
using namespace std;
struct krolik {char pol; int vozrast; double massa;};
int main()
{
FILE *f; krolik dat, max; int n;
cout << "File name? ";
char s[20];
cin.getline(s, 20);
f=fopen(s, "rb");
fread(&dat, sizeof(krolik), 1, f);
max=dat;
while (fread(&dat, sizeof(krolik), 1, f))
{if (dat.vozrast>max.vozrast) max=dat;
else if (dat.vozrast==max.vozrast&&dat.massa>max.massa) max=dat;}
cout << "The oldest rabbit has a sex " << max.pol << ", age " << max.vozrast << " and mass " << max.massa << endl;