Программирование · 2 min read · Nov 20, 2025
Учебник по программированию на C для Linux, часть 22 - Доступ к аргументам командной строки в программе на C

В предыдущем уроке мы обсудили несколько концепций, связанных с указателями в языке программирования C. Одной из концепций, которую мы обсудили, был массив указателей. Мы использовали пример массива указателей на целые числа, чтобы продемонстрировать эту концепцию.
Как получить доступ к аргументам командной строки в программе на C
Но, как упоминалось в том уроке, массив указателей может быть разных типов. Например, вот массив указателей на символы:
char *arr[] = {"HowtoForge", "FaqForge", "Linux"};А вот небольшая программа, которая показывает, как этот массив может быть использован:
#include
int main()
{
char *arr[] = {"HowtoForge", "FaqForge", "Linux"};
printf("\n %s", *arr);
printf("\n %s", *(arr+1));
printf("\n %s", *(arr+2));
return 0;
} ‘arr’ - это адрес первого элемента этого массива. Теперь, поскольку это массив указателей, первый элемент (и все другие элементы, доступные путем добавления 1 и 2 к arr) - это просто адрес. Поэтому, чтобы получить доступ к значению, хранящемуся по этому адресу, мы используем оператор *.
Следующий вывод этой программы:
HowtoForge
FaqForge
LinuxТак вы получаете доступ к значениям из массива указателей на символы. Теперь вы, вероятно, думаете, почему мы обсудили все это?
Что ж, мы сделали это, потому что это приводит нас к другой важной концепции, а именно к возможности доступа к аргументам командной строки в средах, которые поддерживают язык программирования C. Давайте обсудим это подробнее.
Как вы, вероятно, уже знаете, ‘main’ - это первая функция в вашей программе, которая вызывается при выполнении программы. Она вызывается с двумя аргументами: argc и argv. Первый из них сообщает вам о количестве аргументов командной строки, а второй на самом деле является массивом указателей на сами аргументы.
Обратите внимание, что имя самой программы передается в качестве аргумента функции main. Поэтому количество аргументов - представленное argc - на одно больше, чем фактическое количество аргументов, переданных программе. Вот пример:
#include
int main(int argc, char *argv[])
{
printf("\n %d", argc);
printf("\n %s", *argv);
return 0;
} Теперь мы выполнили эту программу - названную a.out и находящуюся в директории ‘home’ нашей системы - без каких-либо аргументов. И вот вывод:
1
/home/a.outТаким образом, вы можете видеть, что имя выполняемой программы было передано в качестве аргумента. Если бы я использовал следующую команду:
/home/a.out htf ffТо в этом случае argc было бы 3, а argv содержал бы адреса строк ‘/home/a.out’, ‘htf’ и ‘ff’.
Вот лучший способ написать программу для вывода аргументов:
#include
int main(int argc, char *argv[])
{
for(int i=0; i Стоит помнить, что аргументы хранятся в массиве в том же порядке, в котором они передаются в командной строке.
Заключение
Вы, вероятно, столкнетесь с несколькими ситуациями, когда вам придется иметь дело с аргументами командной строки внутри вашего кода на C. То, что мы обсудили здесь, должно стать основой для вас. Попробуйте написать несколько программ, чтобы лучше понять, как аргументы командной строки доступны внутри программы на C.
Get new posts in your inbox
No spam. Unsubscribe anytime.