2.1.1. Список аргументов

2.1.1. Список аргументов

Для запуска программы достаточно ввести ее имя в командной строке. Дополнительные информационные элементы, передаваемые программе, также задаются в командной строке и отделяются от имени программы и друг от друга пробелами. Такие элементы называются аргументами командной строки. (Аргумент, содержащий пробел, должен заключаться в кавычки.) Вообще-то, если быть более точным, правильнее говорить о списке аргументов, поскольку они не обязательно поступают из командной строки. В главе 3, "Процессы", рассказывается об ином способе вызова программы, при котором другая программа может передавать ей список аргументов напрямую.

Когда программа запускается из командной строки, список аргументов охватывает все содержимое строки, включая имя программы и любые присутствующие аргументы. Допустим, вызывается программа ls, отображающая содержимое корневого каталога и размеры соответствующих файлов:

% ls -s /

В данном случае список аргументов программы ls состоит из трех элементов. Первый — это имя самой программы, указанное в командной строке, а именно ls. Второй и третий элементы — аргументы командной строки -s и /.

Функция main() получает доступ к списку аргументов благодаря своим параметрам argc и argv (если они не используются, их можно не указывать). Параметр argc — это целое число, равное количеству элементов в списке. Параметр argv — это массив символьных указателей. Размер массива равен argc, а каждый элемент массива указывает на соответствующий элемент списка. Все аргументы представляются в виде строк, оканчивающихся нулевым символом.

Работа с аргументами командной строки сводится к просмотру параметров argc и argv. Если имя программы не должно учитываться, не забудьте пропустить первый элемент списка.

Использование параметров argc и argv демонстрируется в листинге 2.1.

Листинг 2.1. (arglist.c) Использование параметров argc и argv

#include <stdio.h>

int main (int argc, char* argv[]) {

 printf("The name of this program is "%s*. ", argv[0]);

 printf("This program was invoked with %d arguments. ", argc - 1);

 /* Имеется ли хоть один аргумент? */

 if (argc > 1) {

  /* Да; отображаем содержимое. */

  int i;

  printf("The arguments are: ");

  for (i = 1; i < argc; ++i)

   printf(" %s ", argv[i]);

 }

 return 0;

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Передача аргументов

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Передача аргументов Один из аспектов нотации требует разъяснений: что происходит со значениями, переданными в качестве аргументов подпрограмме?Рассмотрим вызов в формеr (a1, a2, ..., an)соответствующий программеr (x1: T1, x2: T2, ..., xn: Tn) is ...где r может быть как функцией, так и


26.6. Синтаксический анализ строк аргументов

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

26.6. Синтаксический анализ строк аргументов Хотя библиотека popt обычно используется для синтаксического анализа аргументов, уже разделенных на массив вида argv, в некоторых программах необходимо анализировать синтаксис строк, формат которых идентичен командным строкам.


26.7. Обработка дополнительных аргументов

Из книги VBA для чайников автора Каммингс Стив

26.7. Обработка дополнительных аргументов Некоторые приложения реализуют эквивалент псевдонимов параметров, однако для этого им необходима специальная логика. Функция poptStuffArgs() позволяет приложению вставлять новые аргументы в текущую структуру poptContext.#include <popt.h>int


Получение списка аргументов

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Получение списка аргументов Многие VBA-процедуры требуют, чтобы при их выполнении были определены один или несколько аргументов. Такие процедуры используют в своих вычислениях (или других выполняемых ими действиях) информацию, содержащуюся в этих аргументах. Подобно


Вызов функции с переменным числом аргументов

Из книги Краткое введение в программирование на Bash автора Родригес Гарольд

Вызов функции с переменным числом аргументов Для вызова функции с переменным числом аргументов не требуется никаких специальных действий: в вызове функции просто задается то число аргументов, которое нужно. В предварительном объявлении (если оно есть) переменное число


Функции работы со списком аргументов

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Функции работы со списком аргументов Функция Краткое описание va_arg выбрать аргумент из списка va_end переустановить указатель va_start установить указатель на начало списка аргументов Эти макроопределения дают возможность получить доступ к аргументам функции, когда


Использование аргументов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Использование аргументов Возможно, вы уже заметили, что большинство программ в Linux не интерактивны. Вы должны указать им какие-то параметры, в противном случае вы получите сообщение со списком возможных аргументов. Возьмем, к примеру, команду more. Если вы не укажете имя


Наличие нескольких аргументов

Из книги C++ для начинающих автора Липпман Стенли

Наличие нескольких аргументов      Если для связи с некоторой функцией требуется более одного аргумента, то наряду с именем функции можно задавать список аргументов, разделенных запятыми, как показано ниже. printnum(i,j) int i, j;{ printf(" Новых точек = %d. Всего точек = %d. ", i, j); }     Мы


Структуры в качестве аргументов функции

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Структуры в качестве аргументов функции В не расширенном языке Си можно передавать функции адрес структуры. Например, если montana является структурной переменной структурного типа player, мы можем обратиться к функции следующим образом: stats(&montana);Функция stats( ) будет иметь


10.4. Явное задание аргументов шаблона A

Из книги автора

10.4. Явное задание аргументов шаблона A В некоторых ситуациях автоматически вывести типы аргументов шаблона невозможно. Как мы видели на примере шаблона функции min5(), если процесс вывода дает два различных типа для одного и того же параметра шаблона, то компилятор


Передача аргументов новым потокам

Из книги автора

Передача аргументов новым потокам Мы уже упомянули, что в листинге 26.2 мы преобразуем целочисленную переменную connfd к указателю на неопределенный тип (void), но этот способ не работает в некоторых системах. Для корректной обработки данной ситуации требуются дополнительные