Я хочу получить число байтов с помощью ftell для чтения данных из моего двоичного файла, а ftell возвращает 108 байтов вместо 144 (фактический размер моего двоичного файла)
Здесь я создаю двоичный файл:
void database_add(char *moviestxt_filename, char *database_filename)
{
FILE *txt = fopen(moviestxt_filename,"r");
FILE *bin = fopen(database_filename,"wb");
if(bin == NULL) { printf("Binary file open error\n"); return 0;}`
if(txt == NULL) {printf("txt file open error\n"); return 0;}
movie m; int i=1;
while(1)
{
fscanf(txt,"%s",&m.title);
fscanf(txt,"%d",&m.relese_year);
fscanf(txt,"%f",&m.imdb_rate);
fscanf(txt,"%d",&m.duration.hours);
fscanf(txt,"%d",&m.duration.minutes);
fseek(bin, 0 , SEEK_END);
fwrite(&m, sizeof(m), 1, bin);
if(feof(txt)) break;
}
}
Вот функция, в которой я хочу прочитать двоичный файл:
movie* database_read(char *database_filename)
{
FILE *bin = fopen(database_filename,"rb");
if(bin == NULL){printf("Binary file open error\n"); return 0;}
fseek(bin, 0, SEEK_END);
int size = ftell(bin); //Here I get the wrong size
// ......
}
Вот моя основная функция:
int main()
{
movie *v;
database_add("movies.txt","db");
v = database_read("db");
return 0;
}