← Каталог
Основы языка Zig — Практический пример — CLI-утилита для чтения файла
Фрагмент из «Основы языка Zig»: Практический пример — CLI-утилита для чтения файла.
const std = @import("std");
fn readFile(allocator: std.mem.Allocator, path: []const u8) ![]u8 {
const file = try std.fs.cwd().openFile(path, .{});
defer file.close();
const stat = try file.stat();
const buffer = try allocator.alloc(u8, stat.size);
_ = try file.readAll(buffer);
return buffer;
}
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
const args = try std.process.argsAlloc(allocator);
defer std.process.argsFree(allocator, args);
if (args.len != 2) {
std.debug.print("Использование: catfile <путь_к_файлу>\n", .{});
return;
}
const content = try readFile(allocator, args[1]);
defer allocator.free(content);
const stdout = std.io.getStdOut().writer();
try stdout.writeAll(content);
} const std = @import("std");
fn readFile(allocator: std.mem.Allocator, path: []const u8) ![]u8 {
const file = try std.fs.cwd().openFile(path, .{});
defer file.close();
const stat = try file.stat();
const buffer = try allocator.alloc(u8, stat.size);
_ = try file.readAll(buffer);
return buffer;
}
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
const args = try std.process.argsAlloc(allocator);
defer std.process.argsFree(allocator, args);
if (args.len != 2) {
std.debug.print("Использование: catfile <путь_к_файлу>\n", .{});
return;
}
const content = try readFile(allocator, args[1]);
defer allocator.free(content);
const stdout = std.io.getStdOut().writer();
try stdout.writeAll(content);
}