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

C ++ 'daki setvbuf () işlevi, arabelleğin arabelleğe alma modunu ve boyutunu değiştirmek veya belirtmek için kullanılır.

setvbuf () prototipi

 int setvbuf (FILE * akım, karakter * arabellek, int modu, size_t boyutu);

setvbuf()Fonksiyon modu değerine verilen dosya akışının tamponlama modunu değiştirir.

Arabellek boş değilse, arabellek boyutu boyuttur, aksi takdirde işlev otomatik olarak bir arabellek ayırır (boyut değerine bağlı olarak).

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

setvbuf () Parametreler

  • stream: Bir dosya akışı.
  • tampon: Akış tarafından kullanılacak tamponun işaretçisi.
  • mod: Arabelleğe alma modu. Arabelleğe alma modu türleri şunlardır:
    • _IOFBF: tam arabelleğe alma
    • _IOLBF: satır arabelleğe alma
    • _IONBF: arabelleğe alma yok
  • size: Bayt cinsinden arabellek boyutu.

setvbuf () Dönüş değeri

setvbuf()İşlevini verir başarısızlık başarı ve Sıfır dışındaki üzerinde sıfır.

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

 #include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )

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

… Bu ikinci satır Bu birinci satır Bu ikinci satır

Ilginç makaleler...