Вместо этого можно использовать метод readUntilDelimiterOrEof
из stdin
:
const stdin = std.io.getStdIn().inStream();
pub fn readUntilDelimiterOrEof(self: @TypeOf(stdin), buf: []u8, delimiter: u8) !?[]u8
Таким образом, код может быть:
fn ask_user() !i64 {
const stdin = std.io.getStdIn().inStream();
const stdout = std.io.getStdOut().outStream();
var buf: [10]u8 = undefined;
try stdout.print("A number please: ", .{});
if (try stdin.readUntilDelimiterOrEof(buf[0..], '\n')) |user_input| {
return std.fmt.parseInt(i64, user_input, 10);
} else {
return @as(i64, 0);
}
}
См. Также: документация Zig 0.6.0 .