char* pointers between C and D

ag0aep6g anonymous at example.com
Mon Jul 25 11:23:42 UTC 2022


On Monday, 25 July 2022 at 11:14:56 UTC, pascal111 wrote:
> module main;
>
> import std.stdio;
> import core.stdc.stdio;
> import core.stdc.string;
>
> int main(string[] args)
> {
>
>
>         const(char)[] ch1 = "Hello World!";
>         char[] ch2="Hello World!".dup;
>
>         const(char) *p1;
>         char *p2;
>
>         p1=ch1.ptr;
>         p2=ch2.ptr;
>
>         writeln(p1[0..strlen(p1)]);
>         writeln(p2[0..strlen(p2)]);
>
>     	return 0;
>     }
>
>
> Runtime output:
>
> https://i.postimg.cc/sfnkJ4GM/Screenshot-from-2022-07-25-13-12-03.png

Do not post screenshots of text.

`strlen` only works on null-terminated strings. The result of 
`.dup` is not null-terminated, so `strlen` doesn't work on it.


More information about the Digitalmars-d-learn mailing list