setvbuf
Mise en mémoire tampon et taille de la mémoire tampon de flux de contrôle.
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Paramètres
stream
Pointeur vers la structure d' FILE .buffer
mémoire tampon Utilisateur-allouée.mode
mode de mise en mémoire tampon.size
taille de mémoire tampon en octets.plage autorisée : 2 <= size <= INT_MAX (2147483647).En interne, la valeur fournie pour size est arrondie vers le bas à plusieurs le plus proche de 2.
Valeur de retour
Retourne 0 si l'opération a réussi.
Si stream est NULL, ou si mode ou size n'est pas dans une modification non valide, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, le retour de cette fonction -1 et définit errno à EINVAL.
Pour plus d'informations sur ces éléments et d'autres codes d'erreur, consultez _doserrno, errno, _sys_errlist, et _sys_nerr.
Notes
La fonction d' setvbuf permet au programme de contrôler la mise en mémoire tampon et la taille de mémoire tampon pour stream.stream doit faire référence à un fichier ouvert qui n'a pas subi une opération d'E/S puisqu'elle a été ouverte.Le tableau désignée par buffer est utilisée comme mémoire tampon, à moins qu'il ne NULL, dans ce cas setvbuf utilise une mémoire tampon allouée automatiquement de longueur size/2 * 2 octets.
le mode doit être _IOFBF, _IOLBF, ou _IONBF.Si mode est _IOFBF ou _IOLBF, alors size est utilisé lorsque la taille de la mémoire tampon.Si mode est _IONBF, le flux est non tamponné et size et buffer sont ignorés.Les valeurs de mode et leurs significations sont :
_IOFBF
mise en mémoire tampon complète ; autrement dit, buffer est utilisé lorsque la mémoire tampon et size est utilisée lorsque la taille de la mémoire tampon.Si buffer est NULL, les octets alloués automatiquement d' size d'une mémoire tampon long est utilisé._IOLBF
Pour certains systèmes, cela fournit la mise en mémoire tampon de ligne.Toutefois, pour Win32, le comportement est identique à _IOFBF - mise en mémoire tampon._IONBF
Aucune mémoire tampon n'est utilisée, indépendamment de buffer ou d' size.
Configuration requise
routine |
en-tête requis |
---|---|
setvbuf |
<stdio.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
bibliothèques
toutes les versions de Bibliothèques runtime C.
Exemple
// crt_setvbuf.c
// This program opens two streams: stream1
// and stream2. It then uses setvbuf to give stream1 a
// user-defined buffer of 1024 bytes and stream2 no buffer.
//
#include <stdio.h>
int main( void )
{
char buf[1024];
FILE *stream1, *stream2;
if( fopen_s( &stream1, "data1", "a" ) == 0 &&
fopen_s( &stream2, "data2", "w" ) == 0 )
{
if( setvbuf( stream1, buf, _IOFBF, sizeof( buf ) ) != 0 )
printf( "Incorrect type or size of buffer for stream1\n" );
else
printf( "'stream1' now has a buffer of 1024 bytes\n" );
if( setvbuf( stream2, NULL, _IONBF, 0 ) != 0 )
printf( "Incorrect type or size of buffer for stream2\n" );
else
printf( "'stream2' now has no buffer\n" );
_fcloseall();
}
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.