That's how "%s" works. It only reads until the first whitespace.
One solution is to make sure there are no spaces, i.e. convert spaces to something else before writing and then back after reading.
Or read one line using fgets() instead of scanf().
And a sidenote: in SaveGame() you don't need
First you don't free the pointers (assuming that LinGameToStr() allocates memory and returns a pointer) and second you don't need an array. You just need one char pointer which you can overwrite each iteration (after freeing it of course).Code:char *lines[MAXLINES];
Bye, Andreas