The problem with having read_string return the length is that you have to write
while (read_string(s) > 5) // loop until the string length is greater than 5
because it's not intuitive that read_string will return the length of the string. You don't save anything this way.