C ++ setbuf () - C ++ Standard Library

A setbuf () függvény a C ++ -ban beállítja a belső puffert, amelyet egy adatfolyam használ az I / O műveletekhez.

setbuf () prototípus

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

Ha a puffer nem null, akkor az egyenértékű a setvbuf (stream, puffer, _IOFBF, BUFSIZ) meghívásával.

Ha a puffer null, akkor az egyenértékű a setvbuf (stream, NULL, _IONBF, 0) meghívásával. Ebben az esetben a pufferelés ki van kapcsolva.

A fejlécfájlban van meghatározva.

setbuf () Paraméterek

  • stream: fájlfolyam.
  • buffer: Egy puffer mutatója, amely lehet null vagy sem. Ha null, akkor a pufferelés ki van kapcsolva, különben legalább BUFSIZ bájtnak kell lennie.

setbuf () Return érték

Egyik sem

Az alábbi 2 példa bemutatja a setbuf () függvény használatát. Mindkét program fájlkezelést használ. Az első példában a puffert a setbuf () segítségével állítjuk be a fájl tartalmának belső tárolásához.

A következő példában az utasítás setbuf(fp, NULL)kikapcsolja a pufferelést. Tehát a fájl tartalmának elolvasásához a fread () függvényt kell használni.

1. példa: A setbuf () függvény működése

 #include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )

A program futtatásakor a kimenet a következő lesz:

 Pufferelt adatfolyam

2. példa: setbuf () függvény kikapcsolt puffereléssel

 #include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )

A program futtatásakor a kimenet a következő lesz:

 Pufferozatlan adatfolyam

érdekes cikkek...