Udostępnij za pośrednictwem


setvbuf

Formanty strumienia buforowania i rozmiar buforu.

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

Parametry

  • stream
    Wskaźnik, aby FILE struktury.

  • buffer
    Bufor przydzielone przez użytkownika.

  • mode
    Tryb buforowania.

  • size
    Rozmiar buforu w bajtach.Dopuszczalny zakres: 2 < = size < = INT_MAX (2 147 483 647).Wewnętrznie, wartości dostarczone dla size jest zaokrąglana w dół do najbliższej wielokrotności liczby 2.

Wartość zwracana

Zwraca wartość 0, jeśli kończy się pomyślnie.

Jeśli stream jest NULL, lub jeśli mode lub size jest w ciągu ważne zmiany, nie jest wywoływany obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, to funkcja zwraca wartość -1 i zestawy errno do EINVAL.

Informacji na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

setvbuf Dzięki funkcji programu kontroli, zarówno buforowania i wielkość bufora stream.streammusi odwoływać się do otwartego pliku, która nie została poddana operacji We/Wy, ponieważ został on otwarty.Tablica wskazywanej przez buffer jest używany jako bufor, chyba że jest to NULL, w którym to przypadku setvbuf używa automatycznie przydzielonego buforu o długości size/2 * 2 bajtów.

The mode must be _IOFBF, _IOLBF, or _IONBF.Jeśli mode jest _IOFBF lub _IOLBF, następnie size jest używana jako rozmiar buforu.Jeśli mode jest _IONBF, strumień jest niebuforowanego i size i buffer są ignorowane.Wartości dla mode i ich znaczenie:

  • _IOFBF
    Buforowanie pełne; oznacza to, że buffer jest używany jako bufor i size jest używana jako rozmiar buforu.Jeśli buffer jest NULL, automatycznie przydzielonego buforu size bajtów jest używane.

  • _IOLBF
    Dla niektórych systemów zapewnia, buforowanie linii.Jednakże dla Win32, zachowanie jest takie same, jak _IOFBF -pełna buforowania.

  • _IONBF
    Bufor nie jest używane, niezależnie od tego, buffer lub size.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

setvbuf

<stdio.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

We/Wy strumienia

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf