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.