Рубрики

Функция getopt () в C для анализа аргументов командной строки

Функция getopt () является встроенной в C и используется для анализа аргументов командной строки.

Синтаксис :

getopt(int argc, char *const argv[], const char *optstring)

optstring is simply  a list of characters, 
each representing a single character option.

Возвращаемое значение : функция getopt () возвращает разные значения:

  • Если опция принимает значение, это указатель на внешнюю переменную optarg.
  • '-1', если больше нет вариантов для обработки.
  • '?' когда есть нераспознанная опция и она сохраняется во внешней переменной optopt.
  • Если для параметра требуется значение (например, -f в нашем примере) и значение не указано, getopt обычно возвращает?.
    Помещая двоеточие в качестве первого символа строки параметров, getopt возвращает: вместо? когда значение не указано.

Как правило, функция getopt () вызывается из условного оператора цикла. Цикл завершается, когда функция getopt () возвращает -1. Затем выполняется оператор switch со значением, возвращаемым функцией getopt ().

Второй цикл используется для обработки оставшихся дополнительных аргументов, которые не могут быть обработаны в первом цикле.

Ниже программа иллюстрирует функцию getopt () в C:

// Программа для иллюстрации getopt ()
// функция в C

  
#include <stdio.h> 
#include <unistd.h> 

  

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

{

    int opt;

      

    // положить ':' в начало

    // строка, чтобы программа могла

    //различать '?' и ':'

    while((opt = getopt(argc, argv, “:if:lrx”)) != -1) 

    

        switch(opt) 

        

            case ‘i’: 

            case ‘l’: 

            case ‘r’: 

                printf(“option: %c\n”, opt); 

                break

            case ‘f’: 

                printf(“filename: %s\n”, optarg); 

                break

            case ‘:’: 

                printf(“option needs a value\n”); 

                break

            case ‘?’: 

                printf(“unknown option: %c\n”, optopt);

                break

        

    

      

    // optind для дополнительных аргументов

    // которые не анализируются

    for(; optind < argc; optind++){     

        printf(“extra arguments: %s\n”, argv[optind]); 

    }

      

    return 0;

}

Выход :

Рекомендуемые посты:

Функция getopt () в C для анализа аргументов командной строки

0.00 (0%) 0 votes