Does this mean that strings of length 4 are stored without the null terminator?  I didn't see code to do that. It looks like your functions to read and write strings always expect and always write the null terminator.