Replacing String objects with C strings

I'm a bit confused on how to make sure readString is null terminated..I just chose the last place in the array and put a '\0' there.

You should quit trying to use strcat() to append the character to the string. The problem with that is that it expects the string being appended to to be NULL terminated. And, yours isn't.

NULL terminated means that the NULL goes at the end of the valid data NOT at the end of the array.

Start with the NULL in the 0th position.

Ditch using strcat(). Create an index, and increment that every time a character is added (after adding the character), and put the NULL at the location defined by index.

byte index;
char array[100];

array[index++] = c;
array[index] = '\0';

Of course, use your own names, and the code does not go together like this snippet shows. index and array are global (in your case) and the other code goes inside the while statement, where you are currently using strcat().

Let's see how much better this makes things for you, as the next step. Then, if there are still issues, we'll work on them.