8 Haziran 2017 Perşembe

getopt_long metodu

Giriş
Şu satırı dahil ederiz.
#include <unistd.h>
Bu metod POSIX standardında yok. GNU extension metodu. geoptlong metodu getopt metodunun biraz daha gelişmiş hali.

Örnek
Şöyle yaparız.
int c;
int option_index =0;

static struct option long_options[] = {

        {"rdonly",     optional_argument, 0,   'a'},
        {"wronly",     optional_argument, 0,   'b'},
        {"command",    optional_argument, 0,   'c'},
        {"verbose",    no_argument,       0,   'd'},
        {0,0,0,0}

};
c=getopt_long(argc,argv, "+", long_options, &option_index);
Örnek
Şöyle yaparız
static struct option const long_opts[] = {
    {"help", no_argument, NULL, 'h'},
    {"lower", no_argument, NULL, 'L'},
    {"numeric", no_argument, NULL, 'N'},
    {"quiet", no_argument, NULL, 'q'},
    {"special", no_argument, NULL, 'S'},
    {"upper", no_argument, NULL, 'U'},
    {NULL, 0, NULL, 0}
};

int c;

while((c = getopt_long(argc, argv, "hLNqSU", long_opts, NULL)) != -1) {
  switch(c) {
    case 'h':
      ...
      break;
    case 'L':
      ...
      break;
    case 'N':
      ...
      break;
    case 'q':
      ...
      break;
    case 'S':
      ...
      break;
    case 'U':
      ...
      break;
    default:
     usage(EXIT_FAILURE);
  }
}
Örnek
Şöyle yaparız. Eğer seçenek parse edilemezse '?' karakteri döndürülür.
int opt;
int optionIndex;
static struct option longOptions[] = {
    {"help", no_argument, NULL, 'h'},
    {"test", no_argument, NULL, 't'},
    {0, 0, 0, 0}
}; 
while ((opt = getopt_long(argc, argv, "ht", longOptions, &optionIndex)) != -1) {
  switch (opt) {
    case 'h':
      ...
      break;
    case 't':
      ...
      break;
    case '?':
      ...
      break;
    default:
      ...
}   

Hiç yorum yok:

Yorum Gönder