public static unsafe int puts(Utf8StringWithZero utf8SWithZero) { fixed(byte *ptr = &utf8SWithZero.GetPinnableReference()) { return(puts(ptr)); } }
static unsafe void Main(string[] args) { puts("AaaaA"); puts("BbbbB".ToBytesTerminatedByZero()); var c = "CcccC".ToBytesTerminatedByZero(); var cHandler = GCHandle.Alloc(c, GCHandleType.Pinned); var cAddr = cHandler.AddrOfPinnedObject(); puts(cAddr); cHandler.Free(); var d = "DddddD\0"; fixed(char *dPtr = d) { var b = (byte *)dPtr; puts(b); } var e = "EeeeeE".ToBytesTerminatedByZero().AsSpan(); fixed(byte *ePtr = e) { puts(ePtr); } var f = "FffffF".ToBytesTerminatedByZero().AsSpan(); fixed(byte *fPtr = &f.GetPinnableReference()) { puts(fPtr); } var g = "GggggG".ToBytesTerminatedByZero(); fixed(byte *gPtr = g) { var gLen = strlen(gPtr); var gLenChar = (char)gLen; puts((byte *)&gLenChar); } var h = stackalloc byte[5]; h[0] = (byte)'H'; h[1] = (byte)'h'; h[2] = (byte)'h'; // 0 h[3] = (byte)'h'; h[4] = 0; puts(h); var i = stackalloc byte[3]; i[0] = (byte)'I'; i[1] = (byte)'i'; i[2] = 0; var iSpan = new ReadOnlySpan <byte>(i, 3); fixed(byte *iSpanPtr = iSpan) { puts(iSpanPtr); } puts(Utf8StringWithZero.Create("The end")); Console.ReadLine(); }