C ++ setbuf () - C ++ standardna knjižnica

Funkcija setbuf () u C ++ postavlja unutarnji međuspremnik koji se koristi za I / O operacije u toku.

prototip setbuf ()

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

Ako međuspremnik nije null, ekvivalentan je pozivu setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Ako je međuspremnik null, ekvivalentno je pozivu setvbuf (stream, NULL, _IONBF, 0). U tom je slučaju međuspremnik isključen.

Definirano je u datoteci zaglavlja.

parametri setbuf ()

  • stream: tok datoteke.
  • buffer: pokazivač na međuspremnik koji može biti null ili ne. Ako je null, međuspremnik je isključen, inače bi trebao imati najmanje BUFSIZ bajtova.

setbuf () Povratna vrijednost

Nijedna

Dolja 2 primjera ilustriraju upotrebu funkcije setbuf (). Oba ova programa koriste rad s datotekama. U prvom se primjeru postavlja međuspremnik pomoću funkcije setbuf () za interno spremanje sadržaja datoteke.

U sljedećem primjeru izjava setbuf(fp, NULL)isključuje međuspremnik. Dakle, za čitanje sadržaja datoteke koristi se fread ().

Primjer 1: Kako funkcionira funkcija setbuf ()

 #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; )

Kada pokrenete program, izlaz će biti:

 Predmemorirani tok

Primjer 2: funkcija setbuf () s isključenim međuspremnikom

 #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; )

Kada pokrenete program, izlaz će biti:

 Nebuferirani tok

Zanimljivi članci...