Hej, program w C pod Linuxa. Ta część to tylko przyjmowanie parametrów przez program.
odpalenie wygląda mnie więcej tak: ./program -n 2 -t 1 -s 0 -j 3 -p 2000 -o 3000
Próbuję obsłużyć sytuację gdy któryś z argumentów (liczba) nie zostanie podana obok parametru czyli zamiast -n 2 bedzię samo -n
To co napisałem działa i wyrzuca komunikat tylko gdy brakuje argumentu dla ostatniego parametru. Czy macie jakiś pomysł jak to rozwiązać?
int c;
//n-numer_ksiegi, t-czas, s-czas po przecinku, j-jednostka, p=port serwera, o-port na ktorym oczekuje streamingu
while((c = getopt(argc, argv, "n:t:s:j:p:o:")) != -1) {
switch(c) {
case 'n' :
if(optarg != NULL)
send_data.nr_ksiegi=atoi(optarg);
break;
case 't' :
if(optarg != NULL)
send_data.sec=atoi(optarg);
break;
case 's' :
if(optarg != NULL)
send_data.ssec=atoi(optarg);
break;
case 'j' :
if(optarg != NULL)
send_data.jednostka=atoi(optarg);
break;
case 'p' :
if(optarg != NULL)
port_u=atoi(optarg);
break;
case 'o' :
if(optarg != NULL)
send_data.port_t=atoi(optarg);
break;
case '?' :
if(optopt == 'n' || optopt == 't' || optopt == 's' || optopt == 'j' || optopt == 'p' || optopt == 'o'){
fprintf(stderr, "Optin -%c needs argument\n", optopt);
}
else{
fprintf(stderr, "Unknown option -%c. \n", optopt);
}
break;
default:
fprintf(stderr, "getopt");
}
}