Comparer deux chaine de caractère

Résolu/Fermé
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 5 mai 2010 à 17:09
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 6 mai 2010 à 17:28
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.





A voir également:

6 réponses

Jaina_ Messages postés 78 Date d'inscription mardi 4 mai 2010 Statut Membre Dernière intervention 1 juin 2010 9
5 mai 2010 à 17:56
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 !
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
5 mai 2010 à 18:08
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
0
Jaina_ Messages postés 78 Date d'inscription mardi 4 mai 2010 Statut Membre Dernière intervention 1 juin 2010 9
6 mai 2010 à 11:08
Et bien alors quel est le problème, je ne comprends pas tout ! :D
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
6 mai 2010 à 17:21
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
0

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

Posez votre question
Jaina_ Messages postés 78 Date d'inscription mardi 4 mai 2010 Statut Membre Dernière intervention 1 juin 2010 9
6 mai 2010 à 17:27
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 ?
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
6 mai 2010 à 17:28
C'est cela sur l'interface du client, je rentrait le login et ensuite je faisait "entrer"
0