Работа с бинарными файлами, конец бинарного файла - C (СИ)
Формулировка задачи:
Доброго времени суток. Хотел разобраться с работой с бинарными файлами в Си. Столкнулся с проблемой: данные в файл я записываю пять раз, однако, когда делаю просмотр от начала до конца файла и вывожу их на экран, я обнаружил что последний элемент дублируется дважды. В чем дело, почему так происходит?
Заранее спасибо за помощь.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct foo
{
int some_digit;
char some_symbol;
};
typedef struct foo foo;
foo create()
{
static int a = 1;
static char b = 'A';
foo new_element;
new_element.some_digit = a;
new_element.some_symbol = b;
a++;
b++;
return new_element;
}
int main()
{
FILE* file = NULL;
file = fopen("test.bin", "wb+");
if(file != NULL)
{
foo temporary1;
int i = 0;
for(i = 0; i < 5; i++)
{
temporary1 = create();
fwrite(&temporary1, sizeof(foo), 1, file);
}
foo* temporary2 = NULL;
temporary2 = malloc(sizeof(foo));
rewind(file);
fseek(file, 0, SEEK_SET);
while(feof(file) == 0)
{
fread(temporary2, sizeof(foo), 1, file);
printf("\n%d\t%c\n", temporary2->some_digit, temporary2->some_symbol);
}
}
return 0;
}Решение задачи: «Работа с бинарными файлами, конец бинарного файла»
textual
Листинг программы
while(fread(...) == sizeof(foo)) printf(...);