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

Funkcija setbuf () v jeziku C ++ nastavi notranji vmesni pomnilnik, ki ga tok uporablja za V / I operacije.

prototip setbuf ()

 void setbuf (FILE * tok, char * medpomnilnik);

Če vmesni pomnilnik ni nulen, je enakovreden klicu setvbuf (tok, vmesni pomnilnik, _IOFBF, BUFSIZ).

Če je medpomnilnik ničen, je to enakovredno klicu setvbuf (stream, NULL, _IONBF, 0). V tem primeru je medpomnjenje izključeno.

Določen je v datoteki glave.

parametri setbuf ()

  • tok: tok datotek.
  • buffer: Kazalec na medpomnilnik, ki je lahko ničen ali ne. Če je nič, je medpomnjenje izklopljeno, sicer pa mora imeti najmanj BUFSIZ bajtov.

setbuf () Vrnjena vrednost

Nobenega

Spodnja 2 primera ponazarjata uporabo funkcije setbuf (). Oba programa uporabljata delovanje datotek. V prvem primeru je medpomnilnik nastavljen s pomočjo setbuf () za notranje shranjevanje vsebine datoteke.

V naslednjem primeru stavek setbuf(fp, NULL)izklopi medpomnjenje. Za branje vsebine datoteke se torej uporablja fread ().

Primer 1: Kako deluje 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; )

Ko zaženete program, bo rezultat:

 Predpomnilniški tok

Primer 2: funkcija setbuf () z izklopljenim medpomnjenjem

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

Ko zaženete program, bo rezultat:

 Nebuferirani tok

Zanimive Članki...