MFC : Pb de buffer - C++ - Programmation
Marsh Posté le 15-07-2004 à 09:59:44
Citation : Je ne sais pas pourquoi il sarrete au milieu car il ny a pas de "\0" a lendroit ou laffichage sarrete. |
En es-tu sûr ?
Marsh Posté le 15-07-2004 à 10:02:32
Ben quand je passe par le for je devrais avoir un caractere bizar ki saffiche normalement a la place.
Et ca me semble bizarre que je me retrouve avec un "\0" au milieu dun mot o_O
Marsh Posté le 15-07-2004 à 10:58:40
Flou1 a écrit : Ben quand je passe par le for je devrais avoir un caractere bizar ki saffiche normalement a la place. |
Pas sûr. Le \0 est un peu particulier. Le mieux est de tester dans ta boucle
Citation : Et ca me semble bizarre que je me retrouve avec un "\0" au milieu dun mot o_O |
Si tu le dis. Mais mieux vaut être sûr.
Au passage, utiliser memset au lieu de ta boucle de mise à zéro.
Marsh Posté le 15-07-2004 à 11:22:57
Jai lancé ethereal lorsque je fesais mes tests et en effet de tps en tps le serveur menvoie des "\000" plus ou moins nimporte ou.
Merci pour ton aide
Marsh Posté le 15-07-2004 à 09:53:58
Jai un petit probleme bizarre avec mes buffers.
C'est surement un truc tout bete mais a 1ere vue je voie pas d'ou ca peux venir.
Donc je suis entrain de developper un petit programme en MFC avec des CSocket.
Jai ma fonction OnReceive qui se "lance" des que qqchose est recu sur ma socket :
void OnReceive(int nErrorCode)
{
int nRead = 0;
int i;
char buffer[4096];
nRead = Receive(buffer, 4096);
buffer[nRead] = 0;
/**/
for (i = 0; i < 4096 ;i++)
buffer[i] = 0;
}
Et a la place des /**/ si je met ca :
for (i = 0; i < nRead ;i++)
TRACE("%c", buffer[i]);
Tout les caracteres saffichent nickel.
Par contre si je met :
TRACE("%s", buffer);
De tps en tps ils naffichent pas tout. Par exemple jai mon nRead a 550 (donc je devrai avoir 550 caracteres qui saffichent) et il ny a que quelque caracteres qui s'affichent.
Je ne sais pas pourquoi il sarrete au milieu car il ny a pas de "\0" a lendroit ou laffichage sarrete.
Merci
Message édité par flou1 le 15-07-2004 à 09:55:34