1
0
Fork 0
mirror of https://github.com/ratfactor/ziglings synced 2024-05-05 01:56:03 +02:00
ziglings/exercises/078_sentinels3.zig
Chris Boesch 7baffa3b4b
Update 078_sentinels3.zig
Changed description of @ptrCast
closes https://github.com/ratfactor/ziglings/issues/334
2023-06-29 21:32:44 +02:00

28 lines
825 B
Zig

//
// 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});
}