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