Again, unless the documentation is wrong, FGets returns the number of bytes read, not the string pointer. So ReadNumber is reading from the wrong thing.
Ok, looks like the documentation might be wrong then... it returns the string pointer, so that part is fine.
Does the "sv plant" thing ring a bell? Are you using the str local variable anywhere else?