Używanie getopt w C z argumentami innymi niż opcje
Tworzę mały program w C, który zajmuje się wieloma argumentami wiersza poleceń, więc zdecydowałem się użyć getopt do sortowania ich dla mnie.
Jednak chcę, aby dwa argumenty nie będące opcjami (pliki źródłowe i docelowe) były obowiązkowe, więc musisz wywoływać je jako argumenty podczas wywoływania programu, nawet jeśli nie ma flag lub innych argumentów.
Oto uproszczona wersja tego, co muszę obsługiwać argumentami z flagami:
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;
}
}
Jak to edytować, aby obsługiwać także argumenty inne niż opcje?
Chcę też mieć możliwość wcześniejszego wyboru opcjilub po opcjach, więc jak by to było obsługiwane?