Utiliser getopt en C avec des arguments sans option
Je suis en train de faire un petit programme en C qui traite avec beaucoup d'arguments de ligne de commande, j'ai donc décidé d'utiliser getopt faire le tri pour moi.
Cependant, j'en veux deux arguments sans options (fichiers source et destination) d'être obligatoire, de sorte que vous avez de les avoir comme arguments, tout en appelant le programme, même si il n'y a pas de drapeaux ou d'autres arguments.
Voici une version simplifiée de ce que j'ai à gérer les arguments avec des drapeaux:
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;
}
}
Comment puis-je modifier cela pour que les non-arguments d'option sont également traitées?
Je veux aussi être capable d'avoir la non-options avant ou après les options, donc comment pourrait-il être géré?
source d'informationauteur Conor Taylor
Vous devez vous connecter pour publier un commentaire.
getopt
définit laoptind
variable pour indiquer la position de l'argument suivant.Ajouter un code similaire à celui après les options de boucle:
Edit:
Si vous souhaitez autoriser les options après les arguments que vous pouvez faire quelque chose de similaire à ceci:
Vraiment bon exemple peut être trouvé ici: GNU Libc Le code:
Il permet d'avoir des options avant et après les arguments. Je n'ai compiler et exécuter le test exemple: