Sdílet prostřednictvím


setvbuf

Řídí ukládání do vyrovnávací paměti datového proudu a velikost vyrovnávací paměti.

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

Parametry

  • stream
    Ukazatel na FILE struktury.

  • buffer
    Vyrovnávací paměť uživateli přidělena.

  • mode
    Režim ukládání do vyrovnávací paměti.

  • size
    Velikost vyrovnávací paměti v bajtech.Rozsah povolených: 2 < = size < = INT_MAX (2 147 483 647).Vnitřně hodnotu pro size zaokrouhleno dolů na nejbližší násobek 2.

Vrácená hodnota

Pokud je úspěšná, vrátí hodnotu 0.

Pokud stream je NULL, nebo pokud mode nebo size není v rámci platné změny je vyvoláno neplatný parametr popisovače, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění pokračovat, tato funkce vrátí -1 a sady errno na EINVAL.

Informace o těchto a jiných kódů chyb naleznete v tématu _doserrno, kód chyby, _sys_errlist a _sys_nerr.

Poznámky

setvbuf Funkce umožňuje program řídit obě vyrovnávací paměti a pro velikost vyrovnávací paměti stream.streamOtevřít soubor, který neprošel vstupně-výstupní operace od posledního otevření musí odkazovat.Pole odkazuje buffer se používá jako vyrovnávací paměť, pokud je NULL, v případě setvbuf používá automaticky přidělené vyrovnávací paměť délky size/2 * 2 bajtů.

The mode must be _IOFBF, _IOLBF, or _IONBF.Pokud mode je _IOFBF nebo _IOLBF, pak size se používá jako velikost vyrovnávací paměti.Pokud mode je _IONBF, je bez vyrovnávací paměti datového proudu a size a buffer jsou ignorovány.Hodnoty mode a jejich význam:

  • _IOFBF
    Úplné ukládání; buffer se používá jako vyrovnávací paměť a size se používá jako velikost vyrovnávací paměti.Pokud buffer je NULL, automaticky přidělené vyrovnávací paměti size se používá bajty.

  • _IOLBF
    Některé systémy nabízí řádku ukládání do vyrovnávací paměti.Pro Win32, chování je však stejná jako _IOFBF -úplné ukládání do vyrovnávací paměti.

  • _IONBF
    Žádná vyrovnávací paměť se používá bez ohledu na buffer nebo size.

Požadavky

Rutina

Požadované záhlaví

setvbuf

<stdio.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Knihovny

Všechny verze C Runtime knihovny.

Příklad

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

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

I/O proudu

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf