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.