Yığınak Akımları
Önceki Diğer Akım Çeşitleri Sonraki
Yığınak Akımları
Bir çıkış akımı açabilir ve verisini bir yığınağa koyabilirsiniz. Bkz. Yığınaklar (Obstacks).
FILE *open_obstack_stream
(struct obstack *yığınak)
işlev
Bu işlev yığınak yığınağına veri yazmak için bir akım açar. Bu yığınakta bir nesne başlatır ve onu veri yazıldıkça büyütür (bkz. Büyüyen Nesneler).
Bu akım üzerinde yapılan bir fflush çağrısı nesnenin o anki boyunu yazılmış olan veriye eşitler. Bir fflush çağrısından sonra nesneyi geçici olarak inceleyebilirsiniz.
Bir yığınak akımının dosya konumunu fseek veya fseeko (Dosyalarda Konumlama) işlevlerini kullanarak değiştirebilirsiniz. Dosya konumunun yazılmış olan verinin sonrasına taşınması arada kalan boşlukların sıfırlarla doldurulmasına sebep olur.
Nesneyi kalıcı yapmak için yığınağı fflush ile güncelleyin ve obstack_finish ile nesneyi bitirip adresini alın. Bunun ardından akıma yazma işlemleri yığınakta yeni bir nesne başlatır ve sonraki fflush ve obstack_finish çağrılarına kadar bu nesne kullanılır.
Fakat ne uzunlukta bir nesne kullanıldığını nasıl bulacaksınız? Nesne uzunluğunu obstack_object_size (Bir Yığınağın Durumu) çağrısı ile alabileceğiniz gibi nesneyi aşağıdaki gibi boş karakterle sonlandırabilirsiniz:
obstack_1grow (yığınak, 0);
Hangi yöntemi kullanırsanız kullanın, bunu obstack_finish çağrısından önce yapmalısınız (isterseniz ikisini de yapabilirsiniz).
Örnekte obstack_finish işlevinin kullanımı görülmektedir:
char *
ileti_dizgesi_yap (const char *a, int b)
{
  FILE *akim = open_obstack_stream (&ileti_yigini);
  output_task (akim);
  fprintf (akim, ": ");
  fprintf (akim, a, b);
  fprintf (akim, "\n");
  fclose (akim);
  obstack_1grow (&ileti_yigini, 0);
  return obstack_finish (&ileti_yigini);
}
Önceki Üst Ana Başlık Sonraki
Dizge Akımları Başlangıç Kendi Özel Akımlarınızı Oluşturun
Bir Linux Kitaplığı Sayfası