Recup un argument de commande linux en C

Résolu
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

4 réponses

  1. 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.
    1. 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.
    2. free !!!! la syntaxe stp ?
    3. 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
    4. lool merciiii tu m'as sauvé la vie
    5. 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 ;) )
  2. Contributeur
    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 :(