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