Comparaison strings

Signaler
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Salut à tous,
J'utilise pour une application deux buffers. L'un utilise un PassWord et l'autre reçoit par un socket (fct recv) une chaîne de caractères. le problm, c'est que la comparaison ne s'effectue que sur la base de la longueur du PassWord. Quelle est la meilleur façon pour que l'ensemble du buffer de réception socket soit considéré. Voici le code que j'utilise:

#define MAX 256

char sPwd[] = "*PassWord";
char buffer [MAX];

_pwd:
memset( buffer, NULL, MAX );
recv( sck, buffer, MAX, 0 );
if ( test = strncmp( buffer, sPwd, ( strlen( sPwd ) ) ) !=0 )
{
goto _pwd;
}

Par exemple:
*PassWor Pas Bon
*PassWord Bon
*PassWordd Bon !!!!!

3 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
strcmp( buffer, sPwd )
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

Eh ben non justement, l'ambiguïté est là. J'ai oublié aussi de préciser une chose importante. J'utilise NetCat comme client qui a notamment la facheuse habitude d'ajouter un 'Char' supplémentaire à l'envoi. faites le test vous serez surpris. C'est pour cette raison qu'auparavant je souhaitais seulement comparer une certaine longueur de chaîne. Qu'en pensez-vous?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
strncmp avec en dernier argument le nombre de caractères a comparer.
Sinon tu peux mettre un zero terminal ou ca t'arrange et l'enlever ensuite.