Code:
strcmp (books.ISBN,books.ISBN);
Ignoring the return value from strcmp isn't going to help...
Usually you would test the return value, if it's zero the strings are equal, and do something accordingly, e.g.
Code:
if (!strcmp(str1,str2))
{
  // strings are equal.
}
Now this bit's interesting. What's the point of the first strcmp call?
Code:
strcmp (books.ISBN,books.ISBN);
while (strcmp (books.ISBN,books.ISBN)==0)