Sto realizzando un piccolo programma in C che gestisce molti argomenti della riga di comando, quindi ho deciso di utilizzare getopt per ordinarli per me.Utilizzo di getopt in C con argomenti non opzionali
Tuttavia, voglio che due argomenti non opzionali (file di origine e di destinazione) siano obbligatori, quindi devi averli come argomenti durante la chiamata al programma, anche se non ci sono flag o altri argomenti.
Ecco una versione semplificata di quello che devo gestire gli argomenti con le bandiere:
while ((c = getopt(argc, argv, "i:d:btw:h:s:")) != -1) {
switch (c) {
case 'i': {
i = (int)atol(optarg);
}
case 'd': {
d = (int)atol(optarg);
}
case 'b':
buf = 1;
break;
case 't':
time = 1;
break;
case 'w':
w = (int)atol(optarg);
break;
case 'h':
h = (int)atol(optarg);
break;
case 's':
s = (int)atol(optarg);
break;
default:
break;
}
}
Come posso modificare questo in modo che gli argomenti che non siano opzioni sono trattati anche?
Voglio anche essere in grado di avere le non-opzioni prima dello o dopo le opzioni, quindi come sarebbe gestito?
OK, ma il mio ciclo uscirà se gli argomenti obbligatori vengono prima di quelli opzionali, quindi verranno elaborati solo quelli obbligatori e non quelli facoltativi. Come posso risolvere questo? –
È normale richiedere che le opzioni vengano prima degli argomenti. Basta specificarlo nella pagina 'man'. –
Sì, lo so, ma ad esempio con il comando ssh, il flag -p può arrivare prima * o * dopo l'argomento obbligatorio nome utente @ server. Voglio solo sapere come fare questo –