Probleme strcmp

Signaler
Messages postés
4
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
13 juillet 2005
-
Messages postés
4
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
13 juillet 2005
-
Bonjour à tous

Je suis nouveau ds la prog C et j'ai un probleme ave la fonction strcmp :



#include <string.h>

#include <stdio.h>



int main(void) {

int cnp;

char filename[80];

char LOG[]="pass";

printf("\n Enter the password : ");

fgets(filename,sizeof(filename),stdin);

cnp=strcmp(LOG,filename);

if (cnp==0)

{

printf("\nOK\n");

}

else {

printf("\nNO\n");

}

printf("%d\n",cnp);

return 0;

}



Lorsque je mets la valeur pass la reponse est kan meme !0 alors qu'elle devrait etre =0 ???



Merci d'avance pour voter aide

8 réponses

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

verifie tes fin de chaines, a mon avis, tu en as une qui fini CRLF et l'autre 0.

@++
Messages postés
63
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
25 juillet 2005

c'est normal, filename est un char[80] donc il veut comparer les 80 caractères

Et comme pass n'en fait que 4, il renvoie != puisque

"pass" !=
"pass
"
Messages postés
11
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
1 juillet 2005

salut
vérifie juste les n premiers caractères, qui correspondent à ce qui a été tapé, avec :
strncmp(LOG, filename,strlen(filename));
il ne devrait plus y avoir de problème
Messages postés
63
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
25 juillet 2005

Non, il faut plutôt que tu fasses



strncmp(LOG, filename,strlen(LOG));



La ce sera bon, ca marchera
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
NENNI, strcmp s'arrête au 1er zéro rencontré comme toute fonction de chaine et se fout de la longueur du buffer.
Donc DOIT fonctionner.

ciao...
BruNews, MVP VC++
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

#include <string.h>

#include <stdio.h>



int main(void) {

int cnp;

char filename[80];

char LOG[]="pass";



printf("\n Enter the password : ");

gets(filename);

cnp=strcmp(LOG,filename);

if (!cnp)

{

printf("\nOK\n");

}

else {

printf("\nNO\n");

}

printf("%d\n",cnp);

return 0;

}
Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
1
#include <stdio.h>
#include <string.h>


#define BEEP 7
#define RETURN 13


//----------------------------------
void GetPassword(char *psw, int len)
{
int c, i = 0;

while((c = getch()) != RETURN)
{
if(i < len - 1)
{
printf("*");
*(psw + i++) = c;
}
else
printf("%c", BEEP);
}
*(psw + i) = 0;
}


//----------------------------------
int main(void)
{
int cnp;
char filename[8+1];
char LOG[] = "pass";


printf("\nEnter password : ");
GetPassword(filename, sizeof(filename));


if(!(cnp = strcmp(LOG, filename)))
printf("\nOK\n");
else
printf("\nNO\n");


printf("%d %s\n\n", cnp, filename);
system("PAUSE");
return 0;
}
Messages postés
4
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
13 juillet 2005

Merci à Tous.
Ca ma beaucoup aidé et je comprend mieux le problème Merci a Magma pour le cryptage avec les etoiles ca me sera tès utile !