Recup un argument de commande linux en C

Résolu
sirinabb -  
 sirinabb -
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. Info
     
    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
    1. Info
       
      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
    2. sirinabb
       
      free !!!! la syntaxe stp ?
      0
    3. Info
       
      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
    4. sirinabb
       
      lool merciiii tu m'as sauvé la vie
      0
    5. Info
       
      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
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Si tu as les sources, c'est simple, il suffit de récupérer les arguments.
    Explicite mieux ton problème.
    1
  3. sirinabb
     
    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