C — аргументы командной строки
Некоторые значения из командной строки можно передавать вашим программам на C во время их выполнения. Эти значения называются аргументами командной строки. и во многих случаях они важны для вашей программы, особенно когда вы хотите управлять своей программой извне, а не жестко кодировать эти значения внутри кода.
Аргументы командной строки обрабатываются с помощью аргументов функции main(), где argc относится к количеству переданных аргументов и argv[] представляет собой массив указателей, который указывает на каждый аргумент, переданный программе. Ниже приведен простой пример, который проверяет наличие какого-либо аргумента, предоставленного из командной строки, и предпринимает соответствующие действия —
#include <stdio.h> int main( int argc, char *argv[] ) { if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); } }
Когда приведенный выше код компилируется и выполняется с одним аргументом, он дает следующий результат.
$./a.out testing The argument supplied is testing
Когда приведенный выше код компилируется и выполняется с двумя аргументами, он дает следующий результат.
$./a.out testing1 testing2 Too many arguments supplied.
Когда приведенный выше код компилируется и выполняется без передачи каких-либо аргументов, он дает следующий результат.
$./a.out One argument expected
Следует отметить, что argv[0] содержит имя самой программы и argv[1] — указатель на первый предоставленный аргумент командной строки, а *argv[n] — последний аргумент. Если аргументы не указаны, argc будет равен единице, а если вы передадите один аргумент, то argc установлено значение 2.
Вы передаете все аргументы командной строки, разделенные пробелом, но если сам аргумент имеет пробел, вы можете передать такие аргументы, поместив их в двойные кавычки "" или одинарные кавычки ''. Давайте еще раз перепишем приведенный выше пример, где мы будем печатать имя программы, а также передаем аргумент командной строки, заключая двойные кавычки —
#include <stdio.h> int main( int argc, char *argv[] ) { printf("Program name %s\n", argv[0]); if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); } }
Когда приведенный выше код компилируется и выполняется с одним аргументом, разделенным пробелом, но заключенным в двойные кавычки, получается следующий результат.
$./a.out "testing1 testing2" Program name ./a.out The argument supplied is testing1 testing2
Язык C