[c] Comment vide le cache de sortie avec fflush(sdout) ou autre ?

Comment vide le cache de sortie avec fflush(sdout) ou autre ? [c] - C - Programmation

Marsh Posté le 03-06-2004 à 00:09:11    

je recois buf et lorsque je fais un printf avec un \n, ca marche, printf affiche  
 

Code :
  1. recv(new_fd, buf, MAXDATASIZE, 0)) == -1);
  2. printf("\n buf   => %s",buf);


 
mais je souhaiterais pouvoir utiliser ma fonction affichage qui me formattrait l'affichage de buf. J'ai utilisé fflush mais rien y fais, j'ai meme utilisé NULL comme argument pour soit disant vidé tout les flux.
 

Code :
  1. recv(new_fd, buf, MAXDATASIZE, 0)) == -1);
  2. if (fflush(NULL) != 0)
  3. {
  4. perror ("fflush " );
  5. }
  6. affichage(buf);
  7. if (fflush(NULL) != 0)
  8. {
  9. perror ("fflush " );
  10. }
  11. voici ma fonction affichage si ca peux aider ..
  12. [cpp]void affichage (char *entete)
  13. {
  14. int lg = strlen(entete);
  15. int i, espace=1, a_la_ligne=1;
  16. for (i=0;i<lg;i++)
  17. {
  18.  printf("%d%c ",i,entete[i]);
  19.  //tous les 16 bits, on separe d'un espace pour que ce soit plus lisible
  20.  if ( (i+1) == espace*16)
  21.  {
  22.   printf("   " );
  23.   espace ++;
  24.  }
  25.  //tous les mots de 32 bits ont va a la ligne
  26.  if ( (i+1) == a_la_ligne*32)
  27.  {
  28.   printf("\n" );
  29.   a_la_ligne ++;
  30.  }
  31. }
  32. printf("\n vide le buffer\n" );
  33. }


 
Que faire pour que la fonction  affichage (char *entete) puisse afficher buf ?


Message édité par weed le 03-06-2004 à 00:16:11
Reply

Marsh Posté le 03-06-2004 à 00:09:11   

Reply

Marsh Posté le 03-06-2004 à 00:26:20    

fflush(NULL) est une extension
 
fflush(stdout) fonctionne très bien.
 
mais là en fait je vois pas trop ou est ton problème honnêtement, surtout que le moindre '\n' sur stdout dans la majorité des cas vide le buffer (terminaux bufferisé par ligne)
 
 
rajoute un oid affichage (const char *entete)


Message édité par Taz le 03-06-2004 à 00:34:09
Reply

Marsh Posté le 03-06-2004 à 00:31:26    

C'est compliqué, ton truc pour un jeudi soir.
retiens une seule chose qui pourras te dépanner : les *printf* sont bufferisés à la ligne.

Reply

Marsh Posté le 03-06-2004 à 00:33:56    

vivelec a écrit :


retiens une seule chose qui pourras te dépanner : les *printf* sont bufferisés à la ligne.

les printf sont pas bufferisés : c'est les FILE*. et il existe 3 mode de bufferisation

Reply

Marsh Posté le 03-06-2004 à 00:35:53    

Taz a écrit :

les printf sont pas bufferisés : c'est les FILE*. et il existe 3 mode de bufferisation


Tu as tout à fait raison.
Pour une fois que tu ne gnaques pas, c'est à souligner.

Reply

Marsh Posté le 03-06-2004 à 00:52:20    

lol en fait ca fonctionne
bizzare j'avais pourtant fais toutes les possibilités nimaginable avec fflush  
 merci a vous tous ....


Message édité par weed le 03-06-2004 à 00:53:22
Reply

Sujets relatifs:

Leave a Replay

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