Comparaison strings

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007 - 19 sept. 2004 à 21:59
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 20 sept. 2004 à 10:18
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

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 sept. 2004 à 22:16
strcmp( buffer, sPwd )
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
19 sept. 2004 à 23:41
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?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 sept. 2004 à 10:18
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.
0
Rejoignez-nous