+3  A: 

I think your problem is that your fields contain spaces. fscanf will stop scanning a string (%s) when it sees a white space character. You need to change your %s format specifiers to allow spaces to be included. You can either just exclude your delimiter, e.g. %[^;] or specify what characters to include, e.g. %[ a-zA-Z0-9-] (I think I'd probably go for the first option).

% man fscanf

Paul R
Thats great! Didn't even think of that :/ thanks :D
Thomas Winsnes
+3  A: 

Not the cause, but in your PrintBookList method, you have

for(i = 0; i < sizeof(bookList); i++)

but you can't get the size of an array of structs that way (it returns 4, the size of a pointer).

It is standard practice to pass the size in:

void PrintBookList(struct book **bookList, int numBooks) 
Mitch Wheat
thanks for the tip, fixed :)
Thomas Winsnes
A: 

Don't forget to limit size of readed strings (don't forget end '\0' symbol) (scanf don't know how logn are filds).

scanf("%24[^;],...

Nikel