Comparer deux chaine de caractère [Résolu/Fermé]

Signaler
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
-
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
-
Bonjour,

J'ai un petit souci pour comparer 2 chaines de caractères:
voici le code:

char login1[50]="admin";
char mdp1[50]="azerty";

char login[50]="";
char mdp[50]="";

int main()
{

if(recv(ns, login, 50, 0) != SOCKET_ERROR)
{
    printf("Recu : %s\n", login);
}

    if (strcmp(login1, login) == 0) // Si strcmp renvoie 0 (chaînes identiques)
    {
        printf("Les logins sont identiques\n");
    }
    else
    {
        printf("login differents\n");
    }

}


Le code est un peu simplifie ici !!

Je voudrai mettre la valeur que je reçoit dans la chaine de caractère "login" pour ensuite la comparer avec la chaine "login1"

Merci de votre aide.





6 réponses

Messages postés
78
Date d'inscription
mardi 4 mai 2010
Statut
Membre
Dernière intervention
1 juin 2010
8
Salut !

Je ne comprends pas pourquoi ça ne fonctionne pas.
Le deuxième argument "login" de la fonction recv doit normalement recevoir les informations. "login" est bien un char.

A mon avis, le problème ne vient pas de ce bout de code, mais plutôt de la fonction recv et de ta socket "ns".
Mais là c'est un autre problème !
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
3
Salut,

C'est possible mais il m'affiche bien le "login" qu'il reçcoit par la fonction recv:

 printf("Recu : %s\n", login)


il affiche: Recu: admin
Messages postés
78
Date d'inscription
mardi 4 mai 2010
Statut
Membre
Dernière intervention
1 juin 2010
8
Et bien alors quel est le problème, je ne comprends pas tout ! :D
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
3
Salut,

En faite, le problème n'est pas visible à l'oeil nu. Pour le voir, il a fallu que je compte le nombre de caractère en faisant cela, je me suis aperçu qu'il transmettait 6 caractères au lieu des 5, donc il y avait un '\n' à la fin.

Pour que la comparaison puisse se faire, il a fallu rajouter ce bout de code:

static void search(char *login)
{
    char *p = strchr(login, '\n');
 
    if (p)
    {
        *p = 0;
    }
}
 
int main
{
    if (recv(ns, login, 50, 0) != SOCKET_ERROR)
    {
        search(login);
        printf("\nRecu :%s", login);
    }
 
}


et ensuite je compare.

Merci
Messages postés
78
Date d'inscription
mardi 4 mai 2010
Statut
Membre
Dernière intervention
1 juin 2010
8
Ah ok,

Par curiosité, le \n se rajoute dans ton buffer parce que tu faisais "entrer" pour valider ton login ?
Ou c'est automatique quand tu valides ton login ?
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
3
C'est cela sur l'interface du client, je rentrait le login et ensuite je faisait "entrer"