String operations are intrinsically complex by nature. At least they are now in this age that you cannot assume the encoding is always ASCII.<p>The goodness of this approach is that if you just need to pass around the string, a shallow copy of the first 16 byte block is enough. It might or might not contain the whole of the array, but if you need to know, it means you need to go through all the corner cases, no strcat(small_buffer, unsanitized_user_input), thank you very much!