Segmentation fault

Michelin -  
 Michelin -
Bonjour,

Lorsque je tape ./tools -comp, on me renvoie l'erreur : segmentation fault ./tools -comp
Je devrais avoir : Nb option for -comp

Ca marche si je mets ./tools -comp argument1

Le programme tools compile sans problème. Voici le début :

int main (int argc, char* argv[])
{

if (argc<2)
{
printf ("Usage: fault\n");
return 1;
}

if (strcmp(argv[1], "-comp") == 0)
{
if (argc != 4)
{
printf (" Nb option for -comp\n");
return 2;
}

if (strcmp(argv[2], argv[3]) == 0)
printf ("Equal\n");
else
printf ("Different\n");

return 0;
}

J'ai mis en gras la ligne qui me semblait être en cause en premier lieu.
Quelqu'un aurait une idée ?

Merci d'avance, et bonne journée !
Configuration: Windows Vista Internet Explorer 7.0

4 réponses

  1. Nanarpim
     
    J'ai testé ton code, il marche parfaitement chez moi ....

    ./tools -comp

    Nb option for -comp
    1
  2. kuchi007 Messages postés 318 Statut Membre 31
     
    Euh déjà es - tu sur que c'est l'élément 1 que tu souhaites accéder?

    if (strcmp(argv[1], "-comp") == 0)

    Parce que pour avoir un semgentation fault c'est que tu dois accéder illégalement à de la mémoire non autorisée.
    D'où la question tu es sûr de ton argv???
    0
  3. Michelin
     
    kuchi007 : je ne vois pas trop ce que tu veux dire. argv[1], c'est bien le "-comp" passé en argument ? Le "if (strcmp(argv[1], "-comp") == 0)" signifie : "si le premier argument passé en ligne de commande est -comp" ; où serait le problème ?

    Merci d'avoir essayé Nanarpim. Je ne vois pas pourquoi ça ne marche pas chez moi...
    0
  4. Michelin
     
    Le problème est résolu, merci pour votre aide à tous les deux.

    Vous n'auriez pas pu trouver, l'erreur venait d'une ligne que je n'ai pas postée...
    0