On Wednesday, 11 March 2020 at 16:10:48 UTC, 9il wrote:
On Wednesday, 11 March 2020 at 16:07:06 UTC, Abby wrote:
What is the proper way to get char* from string which is used in c functions? toStringz does returns:

/usr/include/dmd/phobos/std/array.d(965,49): Error: TypeInfo cannot be used with -betterC

and I think string.ptr is not safe because it's not zero termined. So what should I do? realloc each string with /0?

Thank you for your help

3. You can use mir-algorithm for simplicity and speed

----
/+dub.sdl:
dependency "mir-algorithm" version="~>3.7.18"
+/
import mir.format;
import core.stdc.stdio;

void main() {
printf("some_string %s", (stringBuf() << "other_string" << "\0" << getData).ptr);
}
----

stringBuf() uses stack if the inner string fits into it. So, It is a mutch master than malloc/free. However, in this case C function should return pointer ownership to the caller.

Reply via email to