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