string to char* in betterC

9il ilyayaroshenko at gmail.com
Wed Mar 11 16:18:18 UTC 2020


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.


More information about the Digitalmars-d-learn mailing list