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

Fungsi setbuf () di C ++ menyetel buffer internal yang akan digunakan untuk operasi I / O oleh aliran.

setbuf () prototipe

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

Jika buffer tidak null, itu setara dengan memanggil setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Jika buffer adalah null, itu setara dengan memanggil setvbuf (stream, NULL, _IONBF, 0). Dalam hal ini buffering dimatikan.

Ini didefinisikan dalam file header.

setbuf () Parameter

  • aliran: Aliran file.
  • buffer: Sebuah pointer ke buffer yang mungkin null atau tidak. Jika nihil, buffering dimatikan, jika tidak maka minimal harus BUFSIZ byte.

setbuf () Mengembalikan nilai

Tidak ada

2 contoh di bawah ini menggambarkan penggunaan fungsi setbuf (). Kedua program ini menggunakan operasi file. Dalam contoh pertama, buffer disetel menggunakan setbuf () untuk menyimpan konten file secara internal.

Dalam contoh berikutnya, pernyataan setbuf(fp, NULL)menonaktifkan buffering. Jadi untuk membaca konten file, fread () digunakan.

Contoh 1: Cara kerja fungsi 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; )

Saat Anda menjalankan program, hasilnya adalah:

 Aliran Buffered

Contoh 2: fungsi setbuf () dengan buffering dimatikan

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

Saat Anda menjalankan program, hasilnya adalah:

 Aliran Tanpa buffer

Artikel yang menarik...