Sdílet prostřednictvím


setbuf

Řídí ukládání datových proudů do vyrovnávací paměti. Tato funkce je zastaralá; místo toho použijte setvbuf .

Syntaxe

void setbuf(
   FILE *stream,
   char *buffer
);

Parametry

stream
Ukazatel na FILE strukturu.

buffer
Vyrovnávací paměť přidělená uživatelem.

Poznámky

Funkce setbuf řídí ukládání do vyrovnávací paměti pro stream. Argument stream musí odkazovat na otevřený soubor, který nebyl přečten ani zapsán. buffer Pokud je NULLargumentem , datový proud není koukaný. Pokud ne, vyrovnávací paměť musí odkazovat na pole znaků délky BUFSIZ, kde BUFSIZ je velikost vyrovnávací paměti definovaná v STDIO.H. Pro ukládání do vyrovnávací paměti vstupně-výstupních operací se místo výchozí vyrovnávací paměti přidělené systémem pro daný datový proud používá uživatelsky zadaná vyrovnávací paměť. Stream stderr je ve výchozím nastavení bez vyrovnávací paměti, ale můžete použít setbuf k přiřazení vyrovnávací paměti stderr.

setbuf byla nahrazena , setvbufcož je upřednostňovaná rutina pro nový kód. Na rozdíl od setvbuf, setbuf nemá žádný způsob hlášení chyb. setvbuf také umožňuje řídit režim ukládání do vyrovnávací paměti i velikost vyrovnávací paměti. setbuf existuje kvůli kompatibilitě s existujícím kódem.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor
setbuf <stdio.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.

#include <stdio.h>

int main( void )
{
   char buf[BUFSIZ];
   FILE *stream1, *stream2;

   fopen_s( &stream1, "data1", "a" );
   fopen_s( &stream2, "data2", "w" );

   if( (stream1 != NULL) && (stream2 != NULL) )
   {
      // "stream1" uses user-assigned buffer:
      setbuf( stream1, buf ); // C4996
      // Note: setbuf is deprecated; consider using setvbuf instead
      printf( "stream1 set to user-defined buffer at: %Fp\n", buf );

      // "stream2" is unbuffered
      setbuf( stream2, NULL ); // C4996
      printf( "stream2 buffering disabled\n" );
      _fcloseall();
   }
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled

Viz také

Vstupně-výstupní operace streamu
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf