setvbuf

Buffer e dimensione del buffer dei controlli.

int setvbuf(
   FILE *stream,
   char *buffer,
   int mode,
   size_t size 
);

Parametri

  • stream
    puntatore a FILE struttura.

  • buffer
    buffer Utente-allocato.

  • mode
    Modalità di buffer.

  • size
    Dimensione del buffer in byte.Intervallo valido: 2 <= size <= INT_MAX (2147483647).internamente, il valore fornito per size viene arrotondato per difetto a più più vicino a 2.

Valore restituito

Restituisce 0 se ha esito positivo.

se stream viene NULL, o se mode o size non è all'interno di una modifica valida, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, la funzione restituisce -1 e set errno in EINVAL.

Per informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.

Note

setvbuf la funzione consente al programma controlli sia il buffer che le dimensioni del buffer per stream.stream deve fare riferimento a un file aperto che non ha subito un'operazione di I/O da quando è stata aperta.La matrice indicata da buffer viene utilizzato come il buffer, a meno che non venga NULLin questo caso, setvbuf utilizza un buffer allocato automaticamente la lunghezza size/2 (* 2 byte.

la modalità deve essere _IOFBF, _IOLBF, o _IONBF.se mode viene _IOFBF o _IOLBF, quindi size viene utilizzato come la dimensione del buffer.se mode viene _IONBF, il flusso è senza tampone e size e buffer vengono ignorati.valori per mode e i relativi significati è:

  • _IOFBF
    Buffer completo, ovvero buffer viene utilizzato come il buffer e size viene utilizzato come la dimensione del buffer.se buffer viene NULL, un buffer allocato automaticamente size i byte di lunghezza viene utilizzato.

  • _IOLBF
    Per alcuni sistemi, questo fornisce il buffer della riga.Tuttavia, per le API Win32, il comportamento è uguale a _IOFBF - Buffer completo.

  • _IONBF
    Nessun buffer viene utilizzato, indipendentemente da buffer o size.

Requisiti

routine

Intestazione di associazione

setvbuf

<stdio.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Librerie

Tutte le versioni di Librerie di runtime del linguaggio C.

Esempio

// 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();
   }
}
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Vedere anche

Riferimenti

Flusso I/O

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf