(Débutant) taille tableau caractère

taille tableau caractère (Débutant) - C++ - Programmation

Marsh Posté le 20-01-2004 à 13:54:40    

Je suis débutant en c++.
 

Code :
  1. /////////////////////////////////////////
  2. char buf[1024];
  3. int size_recu=-1;
  4. while(size_recu==-1)
  5.      size_recu = recv( to_server_socket, buf, 1024, 0);
  6.  
  7. cout << "Receive > " << buf << endl;
  8. ///////////////////////////////////////////


Ce bout de code marche bien. Le truc c'est que quand j'affiche buf, g à l'ecran tous les 1024 caractères. Comment crée un tableau de la taille size_recu à la place de 1024?

Reply

Marsh Posté le 20-01-2004 à 13:54:40   

Reply

Marsh Posté le 20-01-2004 à 13:56:15    

c'est normal que t'ecrases tout le tps tes données ?

Reply

Marsh Posté le 20-01-2004 à 14:01:03    

j'ecrase pas les données, je lis tant que j'ai rien recu.

Reply

Marsh Posté le 20-01-2004 à 14:04:26    

ah ouais exact
bon, pour ton pb :
 
 

Code :
  1. char buf[1024];
  2. int size_recu=-1;
  3. memset(buf,0,1024);
  4. while(size_recu==-1)
  5. size_recu = recv( to_server_socket, buf, 1024, 0);
  6. cout << "Receive > " << buf << endl;


 
 

Reply

Marsh Posté le 20-01-2004 à 14:18:16    

Merci ca marche.
Peux tu m'expliquer un peu memset(buf,0,1024) ??
 
Merci

Reply

Marsh Posté le 20-01-2004 à 14:23:15    

Ca met tout les caracteres de ton tableau a la valeur 0.  
Comme tu le sait le 0 indique une fin de chaine, donc le cin arretera l'affichage de la chaine au premier caractere '\0' qui rencontrera.
Ca ne modifie pas la taille du tableau ca arrete juste l'affichage ou il faut. :)


Message édité par chagarou le 20-01-2004 à 14:25:30
Reply

Marsh Posté le 20-01-2004 à 14:24:17    

Ben fo que tu regardes comment sont faites les chaines de caracteres en C.
en C une chaine de caractere se termine par \0 (autrement dit 0. le chiffre, pas le caractere, hein ? pas '0' quoi). donc au debut j'ecrase tout le buffer avec mes 0 comme ca quelque soit le nombre de caractere lu j'ai tjs un 0 a la fin (enfin, presque sauf si tu lis 1024 caractere, la ca va planté. )

Reply

Marsh Posté le 20-01-2004 à 14:24:26    

AH OK
Trop bon.
 
Merci a tous

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed