Recup un argument de commande linux en C

Résolu/Fermé
sirinabb - 10 août 2011 à 10:29
 sirinabb - 10 août 2011 à 15:44
Bonjour,
je suis en stage et ma tache consiste à ajouter une fonctionnalité à un programme deja developpé...mon problème est que le code que j'ai entre les mains ne récupère pas un chemin donnée en paramètres or c ce que je doit faire :(
je suis très inquiète
merci merci mercii d'avance pour votre aide


A voir également:

4 réponses

int main(int ac, char **av)
{
char *argument;

argument = recup_arg("-d", ac, av);
}

char *recup_arg(char *cmp, int ac, char **av)
{
int i = 1;

while (i < ac)
   {
      if (strcmp(av[i], cmp) == 0 && i + 1 < ac)
        return (strdup(av[i + 1]));
      i++;
   }
return (NULL);
}


Si je ne me trompe pas, cela devrait fonctionner. la chaine "argument" possède le contenu de ce qui est en paramètre après "-d" grace à "recup_argument" (notons que c'est ici une fonction générique qui pourra être réutilisée pour d'autres options).
argument est NULL si -d n'est pas présent ou si il n'y a pas d'argument après.
2
Au passage, strdup va allouer de la mémoire lorsqu'il fera une copie de av[i + 1], une fois que tu as exploité la chaine de caractère "argument" n'oublie pas de la free.
0
free !!!! la syntaxe stp ?
0
free(argument);
à faire une fois que tu as complètement terminé d'utiliser ta variable, sinon ton programme va tout simplement planter et faire un joli Segmentation fault
0
lool merciiii tu m'as sauvé la vie
0
De rien, pense aussi à vérifier que argument est != de NULL quand tu veux l'exploiter (imaginons que l'executable soit utilisé sans l'option -d, si tu essayes quand même d'utiliser argument, tu auras des soucis ;) )
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
10 août 2011 à 11:18
Si tu as les sources, c'est simple, il suffit de récupérer les arguments.
Explicite mieux ton problème.
1
c'est exactement la recuperation des arguments; la commande à passer est la suivante:
tsp -I file ~/Desktop/Flux/NRK.ts -P inject -f -d ~/Desktop/test -O file ~/Desktop/FAI3.ts

je veux recuperer le chamin passée juste après le "-d"
j'arrive pas à faire le code C qui me fait ça :(
0
merci infiniment ça marche
0