Probleme strcmp

ben3020 Messages postés 4 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 juillet 2005 - 21 juin 2005 à 11:21
ben3020 Messages postés 4 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 juillet 2005 - 21 juin 2005 à 16:22
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
A voir également:

8 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 juin 2005 à 11:42
salut,

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

@++
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
21 juin 2005 à 11:50
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
"
0
rvkiki Messages postés 11 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 1 juillet 2005
21 juin 2005 à 11:57
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
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
21 juin 2005 à 12:27
Non, il faut plutôt que tu fasses



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



La ce sera bon, ca marchera
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2005 à 12:30
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++
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
21 juin 2005 à 12:49
#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;

}
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
21 juin 2005 à 14:01
#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;
}
0
ben3020 Messages postés 4 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 juillet 2005
21 juin 2005 à 16:22
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 !
0
Rejoignez-nous