Comment by skitter

2 years ago

As the top level comment was about knowing the length of a string: GTA Online's loading times were atrocious because of a null-terminated string.

Not really, more that the implementation of sscanf() is stupid and calls strlen() even though implementing sscanf() that doesn't require that is perfectly possible.

  • Instead of putting up with people constantly complaining how C is bad because of zero-terminated strings, we should better educate folks that there is absolutely zero reason why one has to rely on a NUL byte in-band signal. And APIs like sscanf() shouldn't be used beyond their historic purposes and there are easier ways to program.

    C doesn't really "have" zero-terminated strings other than supporting them with string literals as well as having an atrocious "strings" library for historical reasons. C has storage and gives you the means to copy data around, that's it.

    (Although I fully agree that the GTA issue can be seen as a bug in the implementation of sscanf()).