Mam za zadanie wczytać dowolną ilość plików za pomocą lini komend. To ma być coś w stylu:
./program -f plik1 plik2 ...(dowolna ilość tych plików) -k katalog1 katalog2....(dowolna ilość tych katalogów)
Udaje mi się wczytać tylko pierwsze argumenty za podanymi opcjami (czyli udaje mi się wczytać tylko plik1, katalog1). Jednak spróbowałem czegoś takiego
while ((c = getopt (argc, argv, "f:k:i:")) != -1)
switch (c)
{
case 'f':
plik[i++]= optarg;
while (argv[optind]!=NULL)
{
printf("%s\n",argv[optind]); //to dla mojej wygody jest
if(argv[optind]!="-%c")
{
plik[i]=argv[optind];
i++;
optind++;
}
else
break;
}
break;
case 'k':
kat = optarg;
break;
ale w takim przypadku traktuje -k też jako kolejny argument .. i wczytuje wszystko jak leci aż do końca lini poleceń jaką wpisałem nie wiem jak po prostu ma rozpoznać, że to jest już ostatni argument dla opcji -f i żeby ponownie wykonał getopt(bo getopt raz wywołany dotyczy 1 opcji, czyli jak wywołam pierwszy raz getopt to on obsluzy -f, wyjdzie i wezmie sie za -k).
//EDIT
Dobra zrobiłem(być może trochę prymitywnie, ale efekt jest ;) ). Po prostu opuszcza pętlę while jak napotka znak '-'. O w taki sposób:
case 'f':
plik[i++]= optarg;
while (argv[optind][0]!='-')
plik[i++]=argv[optind++];