4 ms·
>I think asprintf is useful - it replaces an ugly "malloc-realloc-snprintf-loop"... Well, implement it yourself then. It's really not hard to live without, tho
by Sir_Cmpwn 10y ago
>I think asprintf is useful - it replaces an ugly "malloc-realloc-snprintf-loop"...
Well, implement it yourself then. It's really not hard to live without, though. I don't know about this loop you're talking about but I just do this:
int len = snprintf(NULL, 0, "fmt", ...);
char *foo = malloc(len + 1);
snprintf(foo, len, "fmt", ...);
Easy to wrap that up in your own asprintf function if you would find that useful. And in practice writing a lot of these functions is going to happen anyway when someone ports your non-portable code to another system.
- palunon 10y ago>Well, implement it yourself then. Yeah, let's reinvent the wheel anytime something is not available on all platforms in the world, wether or not you intent to target them... If I target GNU systems, why can't I use GNU features ? If people really want to port my code, let them do so.
- jabot 10y agoI did not know that the return value of snprintf is actually the length of the string that would be produced. I assumed I'd just get some error code - which would require re-trying with some larger buffer, thus the "loop". Thanks for that :-)