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 !

4 réponses

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

./tools -comp

Nb option for -comp
1
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
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
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