C'de Tamponlama Mekanizmasının Degistirilmesi ( setvbuf - setbuf Fonksiyonları )

10:39

“fopen” ile bir dosyayı açtığımızda fopen açılan her dosya için bir tampon oluşturur. Tampon <stdio.h> da bildirilen BUFSIZ sembolik sabitinin belirttiği uzunluktadır. C'de tamponlama mekanizması ( Tampon  stratejisi ve tamponlama boyutu ) iki ayrı fonksiyonla değiştirilebilmektedir . Bunlar setbuf ve setvbuf fonksiyonlarıdır. Standartlara göre setbuf ve setvbuf fonksiyonları dosya fopen'la açıldıktan ve hiçbir işlem yapmadan önce çağrılmalıdır.


Tamponun default boyutu stdio.h içinde bildirilmiş olup BUFSIZE ile belirtilmiştir. Bizim bu sembolik sabit değerini değiştirmemiz tamponlama mekanizmasının boyutunu değiştirmez. Tamponlama boyutunu ve stratejisini değiştirmek için setbuf veya setvbuf fonksiyonlarını kullanmamız gerekir. 

Tamponlama stratejisi;

  • _IOFBF :Full Buffered
  • _IOLBF :Line Buffered
  • _IONBF :No Buffered

setbuf:

setbuf aşağıda belirtilen örnekte olduğu gibi sadece tamponlama yerini değiştirir. Fonksiyon çağrısından sonra tamponlama olarak tmp isimli alanı kullanmaya başlar.


setvbuf:

setvbuf fonksiyonu ise hem tamponlama yerini hem tamponlama boyutunu hem de stratejisini değiştirir.


iki örneğinde çıktısı aşağıdaki gibidir.