Re:C Strings and my slow descent to madness
by bluetomcat on Thursday April 06, 2023 @09:25AM
(#35468014)
In well-written C, you don't work with strings the way you do in other HLLs. For example, extracting and copying substrings is something unnecessary, unless you want to modify the parent string. Otherwise, a substring is represented by a pointer and a size_t length, and can easily be printed that way via the "%.*s" printf specifier.
[ Parent
| on HN ]
Re:C Strings and my slow descent to madness
by gpderetta on Thursday April 06, 2023 @10:16AM
(#35468588)
On other HLLs it is easy to have subviews on other strings. C makes is needlessly hard by requiring null termination in half the APIs.
* consumes an int, not a size_t: https://port70.net/~nsz/c/c11/n1570.html#7.21.6.1p5
Re:C Strings and my slow descent to madness
by TremendousJudge on Thursday April 06, 2023 @02:58PM
(#35472802)
I love how in every C code snippet on every comment on this thread, somebody got something wrong. I take it as a sign that it's probably best to avoid C as much as possible.
Re:C Strings and my slow descent to madness
by giantrobot on Thursday April 06, 2023 @05:32PM
(#35474803)
! multithreaded it's not Hey, at least code
Any C compiler that isn't a trivial toy implementation will warn about that, so it's hardly a C gotcha.
clang and VC++ for x64 warn about this out of the box, but gcc seems to need -Wall.
Re:C Strings and my slow descent to madness
by lolcatuser on Thursday April 06, 2023 @06:56PM
(#35475664)
Maybe my least favorite "feature" of C. I can manage most aspects of zero-terminated strings well enough, but when I have to specify the length of them, is it an 'int', 'size_t', 'ssize_t', or something else? (Answer: All of the above!)