Partager via


setbuf

Contrôle la mise en mémoire tampon de flux. Cette fonction est déconseillée. Utilisez setvbuf à la place.

Syntaxe

void setbuf(
   FILE *stream,
   char *buffer
);

Paramètres

stream
Pointeur vers la structure FILE .

buffer
Mémoire tampon allouée par l’utilisateur.

Notes

La fonction setbuf contrôle la mise en mémoire pour stream. L’argument stream doit faire référence à un fichier ouvert qui n’a pas été lu ou écrit. Si l’argument buffer est NULL, le flux n’est pas débogué. Sinon, la mémoire tampon doit pointer vers un tableau de caractères de longueur BUFSIZ, BUFSIZ correspondant à la taille de la mémoire tampon telle que définie dans STDIO.H. La mémoire tampon spécifiée par l’utilisateur est utilisée pour la mise en mémoire tampon des E/S à la place de la mémoire tampon par défaut allouée par le système. Le stderr flux n’est pas débogué par défaut, mais vous pouvez utiliser setbuf pour affecter des mémoires tampons à stderr.

setbuf a été remplacé par setvbuf, qui est la routine préférée pour le nouveau code. Contrairement setvbufà , setbuf n’a aucun moyen de signaler des erreurs. setvbuf vous permet également de contrôler le mode de mise en mémoire tampon et la taille de la mémoire tampon. setbuf existe pour la compatibilité avec le code existant.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
setbuf <stdio.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.

#include <stdio.h>

int main( void )
{
   char buf[BUFSIZ];
   FILE *stream1, *stream2;

   fopen_s( &stream1, "data1", "a" );
   fopen_s( &stream2, "data2", "w" );

   if( (stream1 != NULL) && (stream2 != NULL) )
   {
      // "stream1" uses user-assigned buffer:
      setbuf( stream1, buf ); // C4996
      // Note: setbuf is deprecated; consider using setvbuf instead
      printf( "stream1 set to user-defined buffer at: %Fp\n", buf );

      // "stream2" is unbuffered
      setbuf( stream2, NULL ); // C4996
      printf( "stream2 buffering disabled\n" );
      _fcloseall();
   }
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled

Voir aussi

E/S de flux
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf