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;
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
26.6. Синтаксический анализ строк аргументов
26.6. Синтаксический анализ строк аргументов Хотя библиотека popt обычно используется для синтаксического анализа аргументов, уже разделенных на массив вида argv, в некоторых программах необходимо анализировать синтаксис строк, формат которых идентичен командным строкам.
26.7. Обработка дополнительных аргументов
26.7. Обработка дополнительных аргументов Некоторые приложения реализуют эквивалент псевдонимов параметров, однако для этого им необходима специальная логика. Функция poptStuffArgs() позволяет приложению вставлять новые аргументы в текущую структуру poptContext.#include <popt.h>int
Передача аргументов новым потокам
Передача аргументов новым потокам Мы уже упомянули, что в листинге 26.2 мы преобразуем целочисленную переменную connfd к указателю на неопределенный тип (void), но этот способ не работает в некоторых системах. Для корректной обработки данной ситуации требуются дополнительные
9.4. Присоединение дополнительных аргументов
0
Использование аргументов
Использование аргументов Возможно, вы уже заметили, что большинство программ в Linux не интерактивны. Вы должны указать им какие-то параметры, в противном случае вы получите сообщение со списком возможных аргументов. Возьмем, к примеру, команду more. Если вы не укажете имя
Получение списка аргументов
Получение списка аргументов Многие VBA-процедуры требуют, чтобы при их выполнении были определены один или несколько аргументов. Такие процедуры используют в своих вычислениях (или других выполняемых ими действиях) информацию, содержащуюся в этих аргументах. Подобно
Наличие нескольких аргументов
Наличие нескольких аргументов Если для связи с некоторой функцией требуется более одного аргумента, то наряду с именем функции можно задавать список аргументов, разделенных запятыми, как показано ниже. printnum(i,j) int i, j;{ printf(" Новых точек = %d. Всего точек = %d. ", i, j); } Мы
Структуры в качестве аргументов функции
Структуры в качестве аргументов функции В не расширенном языке Си можно передавать функции адрес структуры. Например, если montana является структурной переменной структурного типа player, мы можем обратиться к функции следующим образом: stats(&montana);Функция stats( ) будет иметь
Вызов функции с переменным числом аргументов
Вызов функции с переменным числом аргументов Для вызова функции с переменным числом аргументов не требуется никаких специальных действий: в вызове функции просто задается то число аргументов, которое нужно. В предварительном объявлении (если оно есть) переменное число
Функции работы со списком аргументов
Функции работы со списком аргументов Функция Краткое описание va_arg выбрать аргумент из списка va_end переустановить указатель va_start установить указатель на начало списка аргументов Эти макроопределения дают возможность получить доступ к аргументам функции, когда
10.4. Явное задание аргументов шаблона A
10.4. Явное задание аргументов шаблона A В некоторых ситуациях автоматически вывести типы аргументов шаблона невозможно. Как мы видели на примере шаблона функции min5(), если процесс вывода дает два различных типа для одного и того же параметра шаблона, то компилятор
Передача аргументов
Передача аргументов Один из аспектов нотации требует разъяснений: что происходит со значениями, переданными в качестве аргументов подпрограмме?Рассмотрим вызов в формеr (a1, a2, ..., an)соответствующий программеr (x1: T1, x2: T2, ..., xn: Tn) is ...где r может быть как функцией, так и