Serial communication not working as expected

If I understand this correctly, if just 1 character is actually available, you nevertheless attempt to read a bunch of characters in one function call.

For a more cautious and less error-prone approach, I recommend to spend some time studying the Serial Input Basics tutorial.