On Monday, 4 January 2021 at 16:35:23 UTC, Jack wrote:
Do you mean fill .filename member from a D string? something like this?

[...]

    // since .filename isn't a pointer but an array, I think
// you have to use memcpy() here. = operator wouldn't work properly.
    memcpy(&i.filename[0], &cs[0], strlen(cs)+1);

I'm pretty sure I tried using = but it resulted in a type error (or array length mismatch). Also tried memcpy which compiled, though due to the incorrect struct definition it appeared to not work.

// casting away arrayness to make it a pointer (that a C's array is after all)
    printf("str = [%s]\n", &i.filename[0]);

I'll keep this and ...

note that even if .filename was a pointer, in order to the C converted stirng don't turn into garbage in a GC cycle, you would have to either keep reference to dstr around or malloc() and memcpy()

... this in mind, thanks.

Reply via email to