Язык C предоставляет функцию getopt для анализа параметров командной строки.Функция getopt_long является расширением GNU, которое анализирует параметры командной строки, которые предоставляют больше функциональных возможностей, чем getopt , например, для анализа многосимвольных параметров.Вы можете найти документацию здесь: http://linux.die.net/man/3/getopt_long или просто человек getopt_long .Позвольте мне показать пример.Допустим, у вас есть программа, которая имеет 3 параметра (-h для справочного сообщения, -i для отображения целого числа и -s для отображения строки).Во-первых, вы должны объявить struct options .Эта структура содержит все параметры, которые нужны вашей программе, и определяется следующим образом:
struct option {
const char *name; // the option name
int has_arg; // if your option has an argument - no_argument (equivalent to 0) if no option and required_argument otherwise (1)
int *flag; // specifies how results are returned for a long option. If flag is NULL, then getopt_long() returns val
int val; // is the value to return, or to load into the variable pointed to by flag.
};
Поскольку в вашей программе столько параметров, вы должны объявить массив параметров структуры:
struct option options[] = {
{"help", no_argument, NULL, 'h'}, // for the help msg
{"int", 1, required_argument, 'i'}, // display an int
{"string", required_argument, NULL, 's'}, // displays a string
{NULL, 0, NULL, 0}};
И вы читаете ваши варианты следующим образом:
int main(int argc, char* argv[]){
char opt;
while ((opt = getopt_long (argc, argv, "his:", options, NULL)) != -1) {
switch(opt){
case 'h': printf("Help message \n"); exit(0);
case 'i': printf("Int options = %d\n", optarg);break;
case 's': printf("String option = %s\n", optarg); break;
default: printf("Help message\n");
}
}
Не забудьте включить "getopt.h"
Удачи