C ++ setbuf () - C ++ Standart Kitaplığı

C ++ 'daki setbuf () işlevi, bir akış tarafından G / Ç işlemleri için kullanılacak dahili arabelleği ayarlar.

setbuf () prototipi

 void setbuf (FILE * akım, char * tampon);

Tampon boş değilse, setvbuf (akım, tampon, _IOFBF, BUFSIZ) çağırmaya eşdeğerdir.

Arabellek boşsa, setvbuf (akım, NULL, _IONBF, 0) çağırmaya eşdeğerdir. Bu durumda arabelleğe alma kapatılır.

Başlık dosyasında tanımlanmıştır.

setbuf () Parametreler

  • stream: Bir dosya akışı.
  • tampon: Boş olabilen veya olmayan bir tampona işaretçi. Boş ise, arabelleğe alma kapalıdır, aksi takdirde en az BUFSIZ bayt olmalıdır.

setbuf () Dönüş değeri

Yok

Aşağıdaki 2 örnek setbuf () fonksiyonunun kullanımını göstermektedir. Bu programların her ikisi de dosya işlemini kullanır. İlk örnekte, dosyanın içeriğini dahili olarak depolamak için setbuf () kullanılarak arabellek ayarlanır.

Bir sonraki örnekte, ifade setbuf(fp, NULL)arabelleğe almayı kapatır. Yani dosya içeriğini okumak için fread () kullanılır.

Örnek 1: setbuf () işlevi nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 Tamponlanmış Akış

Örnek 2: Arabelleğe alma kapalıyken setbuf () işlevi

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

Programı çalıştırdığınızda, çıktı:

 Arabelleğe Alınmamış Akış

Ilginç makaleler...