PDA

View Full Version : getopt c


gaiapuffo
25-05-2012, 22:04
ho un problema con la getopt del c..da quel che ho capito getopt ha 3 parametri

getopt(argc,argv,opzioni) quando importo la libreria vengono create 3 varabili optarg,optind=1 e un altra meno importante...getopt iniziera a guardare gli elementi di argv partendo da argv[1]

quindi non ho capito come funzioni l'analisi dell'opzione ad esempio mettiamo di avere

while(com=getopt(argc,argv,ab:cd:!=-1);
switch(com){case 'a' :printf(a) break;case'b' :printf(b);break;ecc...

praticamente va a vedere se in argv[1] vi è ab o cd oppure se vi è solo a o solo b o c o d se trova un di queste viene messo in com..se poi la lettra scelta e prima dei : allora oltre a restituire la lettera si mette l'argomento in optarg quindi mettiamo di scrivere su terminale

./a.out a b ciao

e supponendo che nello switch ci siano printf avrò che stampa a b e poi in optarg vi sarà ciao può essere?


soprattutto e giusto come viene analizzata l'opzione ad esempio se ho ab:cd

viene guardato ab contenuto in argv cd contenuto in argv poi a b c d o come viene fatta l'analisi?Ricordo che ogni volta che viene trovato l'opzione argv viene incrementato di 1...