123456789101112131415161718192021222324252627 |
- //
- // We were able to get a printable string out of a many-item
- // pointer by using a slice to assert a specific length.
- //
- // But can we ever GO BACK to a sentinel-terminated pointer
- // after we've "lost" the sentinel in a coercion?
- //
- // Yes, we can. Zig's @ptrCast() builtin can do this. Check out
- // the signature:
- //
- // @ptrCast(value: anytype) anytype
- //
- // See if you can use it to solve the same many-item pointer
- // problem, but without needing a length!
- //
- const print = @import("std").debug.print;
- pub fn main() void {
- // Again, we've coerced the sentinel-terminated string to a
- // many-item pointer, which has no length or sentinel.
- const data: [*]const u8 = "Weird Data!";
- // Please cast 'data' to 'printable':
- const printable: [*:0]const u8 = ???;
- print("{s}\n", .{printable});
- }
|