Exemplo n.º 1
0
 public static unsafe int puts(Utf8StringWithZero utf8SWithZero)
 {
     fixed(byte *ptr = &utf8SWithZero.GetPinnableReference())
     {
         return(puts(ptr));
     }
 }
Exemplo n.º 2
0
        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();
        }