Ce que j'essaie de faire est de prendre en arguments de ligne de commande et de modifier certaines variables en fonction des arguments. J'ai attaché un morceau de mon code parce que le code entier est ~ 400 lignes.Analyser correctement les arguments de ligne de commande dans C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char somestring[500];
int ca=0;
if (argc==1) //if no arguments are specified use defaults
{
}
else
{
while(ca<argc)
{
ca++
if(strcmp(argv[ca],"-f")==0)
{
printf("This works");
ca++;
if(strcmp(argv[ca],"red")==0){
printf("this will print red\n");
}
else{
printf("invalid color");
}
}
if(strcmp(argv[ca),"")==0)
{
printf("invalid argument");
}
else {
strcat(somestring,argv[ca]);
}
}
printf("%s",somestring);
}
}
Si les entrées utilisateur:
./foobar rouge -f ceci est une chaîne
le programme devrait imprimer:
« ce imprimera rouge c'est une chaîne "
Si les entrées utilisateur:
./foobar rouge -f
le programme devrait imprimer "nombre invalide d'arguments de ligne de commande".
Quelle est la manière la plus simple de le faire? J'ai essayé des tonnes de possibilités sans aucune chance. Varier le nombre d'arguments est le principal problème pour moi (aussi j'ai plus de 5 options, par exemple, -f -b -h -w -e)
Aide grandement apprécié. Je peux ajouter tout mon code si vous voulez.
si vous ne mettez pas le texte "ceci est un stri ng "entre guillemets le programme interprétera chaque mot comme un seul argument –
Jetez un oeil à #include http://www.crasseux.com/books/ctutorial/argp-example.html aussi http://stackoverflow.com/questions/7677562/whats-the-difference-between-argp-and-getopt –