Salut,
Le message d'erreur est dû à une mauvaise gestion du nombre de paramètres. Lorsque tu tu lances en ligne de commande : ./programme -compare, tu rentres dans :
if(strcmp(argv[1],"-compare")==0)
Et après, l'instruction
strcmp(argv[2],argv[3]) provoque le segfault car argv[3] n'existe pas.
Dans ton programme il suffit de mettre if (argc<4). Pas besoin de répeter if strcmp puisque tu es déjà dans la boucle
if(strcmp(argv[1],"-compare")==0)
De plus, tu n'as pas besoin de mettre if(strcmp(A,B)==0)... if(strcmp(A,B)!=0).... Utilise simplement :
if(strcmp(A,B)==0) {
//blabla
}
else {
//blabla
}
Et enfin, en C, lorsque le programme s'est déroulé correctement, il retourne 0 et non 1.
Voici la modification de ton programme. Je te laisse corriger pour le return ;-).
if(strcmp(argv[1],"-compare")==0)
{
if(argc < 4)
{
printf("Invalid number of option for -compare");
return 0;
}
if(strcmp(argv[2],argv[3])==0)
printf ("Strings are equal");
else
printf ("Strings are different");
return 1;
}
return 1;
}