Re:The case against a C alternative
by EdSchouten on Tuesday August 09, 2022 @05:05AM
(#32395667)
Exactly! And because you can't create a substring without mutating the original value, you see that C code often needs to resort to unnecessary copying as well.
[ Parent
| on HN ]
No. You can't create a zero-terminated substring other than a proper suffix or a buffer copy. But that's not really a surprise right?
Well then, don't use zero-terminated strings for proper string processing. You don't have to use zero-termination, even when some programmers in the 70s and 80s were convinced enough of it that abominations like strtok() landed in the standard.
>You don't have to use zero-termination
You can choose between zero-termination and having to convert strings back and forth when using idiomatic libraries.
Idiomatic is the wrong word here, because it's certainly not idiomatic to do extra allocations when unneeded. Most APIs let you give the length explicitly if it makes any sense. A not very well-known fact is that even printf format strings let you do printf("%.*s\n", 3, "Hello") which only prints "Hel\n". This is in POSIX C, just not sure when it was standardized.