ВУЗ:
Составители:
Рубрика:
49
char name[100];
char author[100];
int year;
} books[N];
int main(void)
{
for(int i=0;i < N;i++)
{
scanf("%s",books[i].name);
scanf("%s",books[i].author);
scanf("%d",&books[i].year);
}
FILE* fp = fopen("my_file.txt","wb");
fwrite(books, sizeof(books),1,fp);
fclose(fp);
fp = fopen("my_file.txt","rb");
fread(books,sizeof(books),1,fp);
fclose(fp);
printf("------------------------------------------------\n");
for(i=0;i < N;i++)
{
puts(books[i].name);
puts(books[i].author);
printf("%d\n",books[i].year);
}
return 0;
}
В данном примере с помощью функции fwrite() целиком сохраняется
массив books, состоящий из двух элементов, а оператор sizeof(books)
определяет размер массива books. Аналогичным образом реализуется и
функция fread(), которая считывает из файла сразу весь массив. По существу
функции fwrite() и fread(), в данном примере, осуществляют копирование
заданной области памяти в файл, а затем обратно. Это их свойство
удобно
использовать при хранении «сложных» форм данных, когда простая
поэлементная запись данных в файл становится трудоемкой или невозможной.
Следует отметить, что функция fopen() при открытии файла на запись
уничтожает все данные из этого файла, если они были. Вместе с тем
существует необходимость добавлять данные в файл, не уничтожая ранее
записанную информацию. Это
достигается путем открытия файла на
добавление информации. В этом случае функции fopen() третьим аргументом
передается строка “a” или “ab”, что означает открыть файл на добавление
информации в его конец. Продемонстрируем работу данного режима на
следующем примере.
Листинг 15. Добавление информации в файл.
Страницы
- « первая
- ‹ предыдущая
- …
- 47
- 48
- 49
- 50
- 51
- …
- следующая ›
- последняя »