Прочетен: 4574 Коментари: 5 Гласове:
Последна промяна: 04.05.2009 15:13
Първо за да използваме тази функция трябва да включим към програмата си unistd.h
#include “unistd.h”
Използвани променливи за връщане на резултат:
Int opterr -
Int optopt
Int optind
Char optarg
Фукцията:
Int getopt(int argc, char **argv, const char *options)
Getopt функцията взима следващ аргумент за опция от изброените аргументи в argv и argc, които по принцип се посрещат от главната main фукция на програмата.
Options e поредица от опции които са валидни за нашата програма. Примерно ако е “aqw:” за нашата програма ще са валидни опции като –a –q –w но няма да е валиднa опцията –r например. Двуеточието „аяв:” след валидните опции означава че тези опции са задължителни, ако вместо ‘:’ се запише ‘::’ „aqw::”нашите опции стават незадължителни.
Ето и примерна програма която ще наречем ginservice.c :
#include "ctype.h"
#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"
int main(int argc, char **argv)
{
int glass = 0;
int lemon = 0;
int ice = 0;
char *somethingadditional = NULL;
int index;
int c;
opterr = 0;
while((c = getopt(argc, argv, "glip:")) != -1)
switch (c)
{
case "g":
glass = 1;
break;
case "l":
lemon = 1;
break;
case "i":
ice = 1;
break;
case "p":
somethingadditional = optarg;
break;
case "?":
if (optopt == "p")
fprintf (stderr, "option -%c requires an argument.n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option "-%c".n",optopt);
else
fprintf (stderr, "Unknown option character "x%x".n", optopt);
return 1;
default:
abort();
}
printf ("Gin with:n glass = %d n lemon = %d n ice = %d n something additional = %sn",glass,lemon,ice, somethingadditional);
for (index = optind; index < argc; index++)
printf ("Non-option argument: %sn", argv[index]);
return 0;
}
Първо да компилираме:
# gcc -o ginservice ginservice.c
Ето и примерно използване:
#./ginservice -g
Gin with:
glass = 1
lemon = 0
ice = 0
something additional = (null)
#./ginservice -g -l
Gin with:
glass = 1
lemon = 1
ice = 0
something additional = (null)
#./ginservice -g -l -i
Gin with:
glass = 1
lemon = 1
ice = 1
something additional = (null)
#./ginservice -g -l -i -p "this is something additional"
Gin with:
glass = 1
lemon = 1
ice = 1
something additional = this is something additional
#./ginservice -g -l -i -p "this is something additional" other arguments
Gin with:
glass = 1
lemon = 1
ice = 1
something additional = this is something additional
Non-option argument: other
Non-option argument: arguments
Това е.
Надявам се съм бил полезен за някой
Използвана информация от тук
04.05.2009 16:28
04.05.2009 18:08