Bu işlev tampon tamponu ile belirtilen tamponu kullanan ve açıştürü argümanında belirtilen erişimi mümkün kılan bir akım açar. tampon olarak belirtilen dizi en az boyut bayt uzunlukta olmalıdır.
tampon olarak bir boş gösterici belirtirseniz
fmemopen işlevi
boyut bayt uzunlukta bir diziyi (
malloc kullanarak; bkz.
Özgür Bellek Ayırma) özdevimli ayırırır. Bu genelikle sadece tampona bazı şeyleri yazdıktan hemen sonra okumak isterseniz kullanışlıdır. Çünkü aslında tampona bir gösterici almanın bir yolu yoktur (bunun için aşağıdaki
open_memstream işlevini deneyin). Tampon, akım kapatıldığında serbest bırakılır.
açıştürü argümanı
fopen işlevindeki gibi belirtilir (bkz.
Akımların Açılması).
açıştürü ekleme kipinde belirtilirse, ilk dosya konumu tampondaki ilk boş karaktere ayarlanır. Aksi takdirde ilk dosya konumu tamponun başlangıcıdır.
Bir akım yazmak için açılırken boşaltılır ve kapatılır, bir boş karakter (sıfır baytı) yer varsa tamponun sonuna yazılır. Bunun için boyut argümanını tasarlarken bir ek baytı gözönüne almalısınız. Tampona boyut bayttan daha fazlası yazılmak istendiğinde bir hata oluşacaktır.
Okumak için açılan bir akım için tampondaki boş karakterler (sıfır baytları) dosyanın sonu olarak ele alınmaz. Okuma işlemlerinde sadece dosya konumu boyut bayt ilerlediğinde dosya sonu olarak değerlendirilir. Bu durumda karakterleri bir boş karakter sonlandırmalı dizgeden okumak isterseniz boyut baytlık bir dizge sağlamanız gerekir.