Binary file reading problem
- by ScReYm0
Ok i have problem with my code for reading binary file...
First i will show you my writing code:
void book_saving(char *file_name, struct BOOK *current)
{
FILE *out;
BOOK buf;
out = fopen(file_name, "wb");
if(out != NULL)
{
printf_s("Writting to file...");
do
{
if(current != NULL)
{
strcpy(buf.catalog_number, current->catalog_number);
strcpy(buf.author, current->author);
buf.price = current->price;
strcpy(buf.publisher, current->publisher);
strcpy(buf.title, current->title);
buf.price = current->year_published;
fwrite(&buf, sizeof(BOOK), 1, out);
}
current = current->next;
}while(current != NULL);
printf_s("Done!\n");
fclose(out);
}
}
and here is my "version" for reading it back:
int book_open(struct BOOK *current, char *file_name)
{
FILE *in;
BOOK buf;
BOOK *vnext;
int count;
int i;
in = fopen("west", "rb");
printf_s("Reading database from %s...", file_name);
if(!in)
{
printf_s("\nERROR!");
return 1;
}
i = fread(&buf,sizeof(BOOK), 1, in);
while(!feof(in))
{
if(current != NULL)
{
current = malloc(sizeof(BOOK));
current->next = NULL;
}
strcpy(current->catalog_number, buf.catalog_number);
strcpy(current->title, buf.title);
strcpy(current->publisher, buf.publisher);
current->price = buf.price;
current->year_published = buf.year_published;
fread(&buf, 1, sizeof(BOOK), in);
while(current->next != NULL)
current = current->next;
fclose(in);
}
printf_s("Done!");
return 0;
}
I just need to save my linked list in binary file and to be able to read it back ... please help me. The program just don't read it or its crash every time different situation ...