Чтение аргументов командной строки
Разбирайте argv с помощью аллокатора.
«Чтение аргументов командной строки» — бесплатный урок Zig Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Arguments Matter
A real CLI tool reacts to what the user types after its name. Those words are the command-line arguments, and reading them is step one. 🛠️
Zig Hands You Nothing Hidden
Other languages give you a magic argv variable. Zig stays explicit: you ask the std.process namespace for the arguments yourself.
const std = @import("std");Arguments Need an Allocator
Decoding arguments may allocate memory, so Zig asks you for an allocator up front. No allocation happens behind your back.
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();argsAlloc Gives a Slice
Call std.process.argsAlloc with your allocator. It returns a slice of strings, one per argument, that you fully own.
const args = try std.process.argsAlloc(a);Free What You Allocated
Because you own that slice, you must release it with argsFree. A defer right after the call keeps cleanup automatic.
defer std.process.argsFree(a, args);The First Argument Is the Program
By convention args[0] is the path to your own program, not user input. The real values you care about start at index 1.
const program = args[0];Count How Many You Got
The slice carries its own length, so args.len tells you how many arguments arrived. You check it before reaching for any index.
if (args.len < 2) return error.MissingArgument;Loop Over the Inputs
Iterate the user values by slicing past the program name. A for loop over args[1..] visits each argument in order.
for (args[1..]) |arg| {
std.debug.print("{s}\n", .{arg});
}Each Argument Is Bytes
Every argument is a []const u8, a slice of bytes. Comparing or parsing one is just normal Zig string work from here.
if (std.mem.eql(u8, arg, "--help")) {}Turn Text into Numbers
Arguments arrive as text. To get a number, parse it with std.fmt.parseInt, which fails clearly if the text is not a valid integer.
const n = try std.fmt.parseInt(i32, args[1], 10);An Iterator Alternative
Prefer streaming? std.process.argsWithAllocator gives an iterator you advance with next(), handy when you process arguments one at a time.
var it = try std.process.argsWithAllocator(a);
defer it.deinit();Quick Check
Think about what sits at the front of the arguments slice.
Recap
You read arguments with argsAlloc, freed them with argsFree, skipped args[0], and parsed text into values. Your CLI now hears its user. 🎯
Часто задаваемые вопросы
Урок «Чтение аргументов командной строки» бесплатный?
Да — полный текст урока «Чтение аргументов командной строки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Чтение аргументов командной строки»?
Разбирайте argv с помощью аллокатора. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Чтение аргументов командной строки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Чтение аргументов командной строки
- Чтение файлов и stdin
- Запись вывода и коды завершения
- Упаковка и выпуск бинарного файла