Jestem początkującym linuksowym programistą, dziś przeglądałem sobie skrypt z ćwiczeń z programowania i znalazłem tam kod dotyczący podawania argumentów i opcji do programu. O ile obsługa argumentów jest banalna, o tyle obsługa opcji (również banalna) przysporzyła mi problemów. Kod wygląda tak:
Kod: Zaznacz cały
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int opcja;
int kod_powrotu=0;
char optstring[] = ":cvf:"; /* przetwarzane opcje */
while ( (opcja = getopt(argc,argv,optstring)) != -1 )
switch ( opcja ) {
case 'c' :
fprintf(stderr,"przetwarzam -c\n");
break;
case 'v' :
fprintf(stderr,"przetwarzam -v\n");
break;
case 'f' :
fprintf(stderr,"przetwarzam -f '%s'\n",optarg);
break;
case ':' : /* brakuje argumentu w opcji */
fprintf(stderr,"opcja -%c wymaga argumentu\n",optopt);
kod_powrotu = 1; /* Wystapil blad */
break;
case '?' :
default :
fprintf(stderr, "opcja -%c nie znana – ignoruje\n", optopt);
kod_powrotu = 1; /* Wystapil blad */
break;
}
printf("Pozostale argumenty:\n");
for ( ; optind < argc; ++optind )
printf("argv[%d] = '%s'\n",optind,argv[optind]);
return kod_powrotu;
}
Próbowałem szukać czegoś na ten temat, jedyne czego się dowiedziałem to to, że ten błąd pojawia się przy próbie sięgnięcia do miejsca w pamięci, do którego nie mam uprawnień.
Ponieważ kod jest napisany poprawnie, przypuszczam, że problemem jest tu funkcja getopt.
Będę bardzo wdzięczny za pomoc...
Pozdrawiam
W.