Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
26 juil. 2004 à 10:27
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
26 juil. 2004 à 19:40
Bonjour,
voilà, je dois rechercher dans un fichier si chaque ligne correspond à un masque donné (chaque masque est stocké dans une classe). Voilà comment je procède :
le constructeur :
bool Categorie::comparer(char * mask) //Vérifie que le masque donné est le bon
{
char * t = new char [512];
strncpy(t, mask, 512);
int i = strcmp(_masque, t);
if (!strcmp(_masque, t))
{
delete[] t;
return 0;
}
else
{
delete[] t;
return 1;
}
}
j'ia utilisé une variable temporaire et fais un if pour pouvoir bien vérifier mes valeurs (Avant, je faisais juste : return strcmp(_masque, mask);) et meme lorsqu'elles sont égales, mon compilo considère que mes deux chaines sont différentes (VC++ 6.0).
j'obtiens -1 à chaques fois.
theneoiceman
Messages postés78Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 avril 2010 26 juil. 2004 à 10:44
Il y a une chose que je ne comprends pas dans ta maniere de procéder... pourquoi ton masque a une taille fixe de 512 caracteres ? En soit ça n'a pas d'intérêt... faudrait que tu fasses un truc du genre :
Ensuite pour la focntion de comparaison ca devrait donner :
bool Categorie::comparer(char * mask) //Vérifie que le masque donné est le bon
{
char * t = new char [strlen(mask)+1];
strcpy(t, mask);
int i = strcmp(_masque, t);
if (!strcmp(_masque, t))
{
delete[] t;
return 0;
}
else
{
delete[] t;
return 1;
}
}
}
Si tu as encore un problème laisse de nouveau un message.
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 26 juil. 2004 à 12:18
Bha je met tout à 512 par ce que c'est la taille de mon buffer, quand je récupère une ligne dans mon fichier.
Comme ça je usis sur que ce n'est pas une histoire de taille qui me fait planter tout ça...
J'ia essayé ta technique, bah non, toujours pareil, strcmp me renvoie -1.
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 26 juil. 2004 à 14:28
Bon, c'est bon, j'ai trouvé, C juste que quand je récupérais ma chaine dans le fichier, il y avait un caractère de retour chariot qu'il gardait et pour lui, CT pas la bonne chaine à ce moment là.
C réglé, ça marche chez moi ;)