В C функция main является точкой входа в программу и определяется следующим образом:
int main(int argc, char *argv[]) {
// program code goes here
return 0;
}
Параметр argc (количество аргументов) — это целое число, которое содержит количество аргументов, переданных программе из командной строки, включая имя самой программы.
Параметр argv (вектор аргументов) представляет собой массив из char * строк, содержащих аргументы, переданные программе, включая имя самой программы.
Вот пример программы, демонстрирующий, как использовать argc и argv:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Number of arguments: %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
Если мы скомпилируем и запустим эту программу с помощью следующей команды:
./a.out one two three
Вывод будет:
Number of arguments: 4 argv[0]: ./a.out argv[1]: one argv[2]: two argv[3]: three
Как мы видим, argc равно 4, потому что в программу передаются 4 аргумента. Первый аргумент (argv[0]) — это имя самой программы (./a.out), а следующие аргументы (argv[1], argv[2] и argv[3]) — значения "one", "two" и "three" соответственно.
argc и argv полезны для передачи аргументов командной строки в программу. Их можно использовать для настройки поведения программы или, например, для указания входных и выходных файлов.
Вот еще один пример программы, которая использует argc и argv для разбора параметров командной строки:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-h") == 0) {
printf("Usage: %s [-h]\n", argv[0]);
return 0;
}
}
// program code goes here
return 0;
}
В этом примере программа принимает параметр -h, который печатает сообщение об использовании. Если в аргументах командной строки присутствует параметр -h, программа печатает сообщение об использовании и завершает работу.
Мы можем скомпилировать и запустить эту программу с помощью следующей команды:
./a.out -h
Вывод будет:
Usage: ./a.out [-h]
Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы.
Пожалуйста, хлопайте, комментируйте и следите за более познавательным контентом, подобным этому.