Работа с бинарными файлами, конец бинарного файла - 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(...);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д