Hacker News new | ask | show | jobs
by jznsis 761 days ago
This is just a choice of having to provide an output buffer to the function instead of returning a new buffer since it's easier to inject custom allocator behaviour that way
2 comments

There's no return value here:

  void my_sprintf(char* format, ???) {
      sprintf(format, ???);
  }
Author here, thanks for pointing that out! It was a mistake on my part (: I originally wrote this about printf, but decided I should include the section where I implement it, and I decided I didn't want to say anything about side effects, so I changed everything to a version that just returns the new string. In my head this is called "sprintf" (and the notes I based this on, linked in the post, did the same thing) though I can see now how this was confusing to people. Especially since I didn't rewrite it perfectly!
Can you elaborate please? Your description does not match what I see. My understanding is that this is a way to more strongly type function arguments, as an alternative to va_arg.
Yes, but the final result is out_str, not a forward to console, isn't it?

Either way, the format string discussion for the printf familiy of functions is very similar between them

Okay, got it. So you are agreeing with me that the author should have used printf instead of sprintf.

Thanks!

No