On Tuesday, 9 February 2016 at 12:46:59 UTC, Whirlpool wrote:
Hello,

When you are using a C function (from an external library) that returns a pointer on char which is the beginning of a string (I know that C does not have a string type, that they are just arrays of chars ended by '\0'), is there a simple way to print that string with D's write(f)ln, should I use C's printf, or something else ? What is the best way ? Because if I do
writefln("... %s", *pString);
it only displays the first character of the string, the value that pString points to

Thanks

writefln et al sensibly does *not* assume that a pointer to char is a C string, for memory safety purposes.

Print the result of std.string.fromStringz[1] instead:

writeln(fromStringz(pString));
writefln("%s", fromStringz(pString));

[1] http://dlang.org/phobos/std_string#fromStringz

Reply via email to