getopt_long Kullanım Örneği.
Önceki getopt Sonraki
getopt_long Kullanım Örneği.
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>

/* --verbose için tanımlanan bayrak. */
static int verbose_flag;

int
main (argc, argv)
      int argc;
      char **argv;
{
  int c;

  while (1)
    {
      static struct option long_options[] =
        {
        /* Bu seçenekler bir bayrak tanımlar. */
          {"verbose", no_argument,       &verbose_flag, 1},
          {"brief",   no_argument,       &verbose_flag, 0},
        /* Bu seçenekler bayraksız. Onları indislerine bakıp bulacağız. */
          {"add",     no_argument,       0, 'a'},
          {"append",  no_argument,       0, 'b'},
          {"delete",  required_argument, 0, 'd'},
          {"create",  required_argument, 0, 'c'},
          {"file",    required_argument, 0, 'f'},
          {0, 0, 0, 0}
        };
      /* getopt_long seçenek indisini burada saklar. */
      int option_index = 0;

      c = getopt_long (argc, argv, "abc:d:f:",
                        long_options, &option_index);

      /* Seçeneklerin sonu mu, bakalım. */
      if (c == -1)
        break;

      switch (c)
        {
        case 0:
          /* Bu seçenek bir bayrak tanımlamamışsa,
             şimdilik birşey yapmayacağız. */
          if (long_options[option_index].flag != 0)
            break;
          if (optarg)
            printf ("%s argümanı ile ", optarg);
          printf ("%s seçeneği", long_options[option_index].name);

          printf ("\n");
          break;

        case 'a':
          puts ("-a seçeneği\n");
          break;

        case 'b':
          puts ("-b seçeneği\n");
          break;

        case 'c':
          printf ("`%s' değeri ile -c seçeneği\n", optarg);
          break;

        case 'd':
          printf ("`%s' değeri ile -d seçeneği\n", optarg);
          break;

        case 'f':
          printf ("`%s' değeri ile -f seçeneği\n", optarg);
          break;

        case '?':
          /* getopt_long bir hata iletisi basmış oldu. */
          break;

        default:
          abort ();
        }
    }

  /* --verbose ve --brief seçeneklerine rastlandığında onları
     raporlamak yerine onların sonucu olan son durumu raporlayalım. */
  if (verbose_flag)
    puts ("ayrıntı bayrağı etkinleştirildi");

  /* Kalan komut satırı argümanlarını (seçenek olmayan) basalım. */
  if (optind < argc)
    {
      printf ("seçenek olmayan ARGV elemanları: ");
      while (optind < argc)
        printf ("%s ", argv[optind++]);
      putchar ('\n');
    }

  exit (0);
}
Önceki Üst Ana Başlık Sonraki
getopt_long ile Uzun Seçeneklerin Çözümlenmesi Başlangıç Argp
Bir Linux Kitaplığı Sayfası