Программирование · 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.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.