How else would you implement them, seriously.<p>You have two choices, counted or terminated.<p><i>Counted</i> places a complexity burden at the lowest level of coding.<p>With <i>terminated</i> you still have the option of implementing strings with structs or arrays with counts or anything.<p>And people did of course.  Many many different implementations of safe strings exist in C; the fact that none have won out <i>vindicates</i> the decision to use sentinel termination.