Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const std = @import("std");
- fn flush(reader: anytype) @TypeOf(reader).Error!void {
- var scratch: [64]u8 = undefined;
- while (try reader.read(&scratch) != 0) {}
- }
- fn nextLine(reader: anytype, buffer: []u8) !?[]const u8 {
- var line = (try reader.readUntilDelimiterOrEof(
- buffer,
- '\n',
- )) orelse return null;
- // trim annoying windows-only carriage return character
- if (@import("builtin").os.tag == .windows) {
- return std.mem.trimRight(u8, line, "\r");
- } else {
- return line;
- }
- }
- pub fn main() anyerror!void {
- const stdout = std.io.getStdOut();
- const stdin = std.io.getStdIn();
- try stdout.writeAll(
- \\ Enter ten bytes or less:
- );
- var buffer: [10]u8 = undefined;
- const input = while (true) {
- const x = nextLine(stdin.reader(), &buffer) catch {
- flush(stdin.reader());
- continue;
- };
- break x;
- } else unreachable; // (see comment) fallback value could be an empty string maybe?
- try stdout.writer().print("You entered: \"{s}\"\n", .{input});
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement