I believe none of you actually programmed in C. A string terminated by \0 can be represented by a single pointer and an have any length. You can also easily let the string keep growing (until the allocated memory is finished.)
The problem is that you usually don't know where the the allocated memory is finished.
I understand the rationale behind the pointers like they are, but I'd still prefer if pointers could keep both address and size of the buffer. But it's too late now for such kind of redesign or upgrade.
And yes, I do code in C every working day.