Программирование на языке С. Наместников С.М. - 50 стр.

UptoLike

Составители: 

50
#include <stdio.h>
#define N 2
struct tag_book
{
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[0], sizeof(tag_book),1,fp);
fclose(fp);
fp = fopen("my_file.txt","ab");
fwrite(&books[1], sizeof(tag_book),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;
}
В данном примере сначала создается файл my_file.txt, в который
записывается информация по первой книге. Затем открывается этот же файл в
режиме добавления и записывается информация по второй книге. В результате
файл my_file.txt содержит информацию по обеим книгам, что подтверждается
считыванием данных из этого файла и выводом информации на экран.
Когда стандартные функции
возвращают EOF, это обычно означает, что
они достигли конца файла. Однако это также может означать ошибку ввода
информации из файла. Для того чтобы различить эти две ситуации в языке С++
существую функции feof() и ferror(). Функция feof() возвращает значение
отличное от нуля, если достигнут конец файла и нуль в противном случае.
Функция ferror() возвращает ненулевое значение
, если произошла ошибка
чтения или записи, и нульв противном случае. Пример использования
данных функций представлен в листинге 16.
Листинг 16. Использование функции ferror().