//creation of the string
readString += c;
Based on the fact that you're calling it readString, I assume you think the += is concatanating c in your code? It's not. += works as concatenation for String objects, but not for chars. What you are doing is summing the characters into a single character. So if you were to send it '2' and '2', the result in readString will be 'd'.
What you need to an array of chars:
const int maxLength = 50;
You also need an index variable (either global or static) that will keep track of where in the array you are.
int strIndex = 0;
And lastly, you need a character that will signal that you are done transmitting your string. This will depend on what program is sending you the string. The Arduino's Serial Monitor, for example can append '\r' and/or '\n' to the end of each transmission.
#define END_OF_STRING '\n'
From there you just need to read a character as you receive it and decide whether to parse the data and reset the array (if it's the END_OF_STRING marker):
// Do Something with the string
readString = '\0'; // clear the array
strIndex = 0; // reset the index to 0
or add it to the array:
readString[strIndex] = inChar; // put the new char in the array
strIndex++; // increment our index for the next char
readString[strIndex] = '\0'; // null terminate our array to make it a proper string