Okunmamış Nasıl Yapılır
Önceki Okunmamış Yapmak Sonraki
Okunmamış Nasıl Yapılır
Bir karakteri okumamış yapan işlev ungetc'dir, çünkü getc işlevinin tersini yapar.
int ungetc
(int   c,
 FILE *akım)
işlev
ungetc işlevi, akım akımına sıradaki karakterden önce okunacak ilk girdi olarak c karakterini yerleştirir.
c karakteri olarak EOF verilirse işlev hiçbir işlem yapmaz ve EOF ile döner. Bu özelliğini kullanrak, c karakteri olarak getc işlevinin dönüş değerini vererek getc’den dönen değer üzerinde hata denetimi yapmanız gerekmez.
Akıma gönderdiğiniz karakterin son okuduğunuz karakter olması gerekmez. Hatta ungetc kullanmak için akımdan son karakteri okumanız da gerekmez. Ancak bir akımdan hiçbir okuma yapmadan bir karakteri akıma geri itmenin de bir anlamı yoktur. GNU C kütüphanesi ikilik kipte açılmış dosyalar için de bu oluşum için destek verir, diğer sistemlerde bu yoktur.
GNU C kütüphanesi akıma sadece tek karakterin geri itilmesini destekler. Hiçbir okuma yapmadan işlevi peşpeşe iki defa kullanamazsınız. Diğer sistemlerde çok sayıda karakteri akıma geri itebilir ve akıma ittiğiniz karakterleri ters sırada okuyabilirsiniz; yani, son ittiğiniz karakteri ilk olarak okursunuz.
Karakterlerin akıma geri itilmesi dosyada bir değişiklik yapmaz, sadece dahili tampon etkilenir. Bir dosya konumlama işlevi (fseek, fseeko ve rewind işlevlerinden biri; bkz. Dosyalarda Konumlama) çağrılırsa geri itilmiş olarak bekleyen karakterler iptal edilir.
Okunmamış karakter olarak bir akıma itilen karakter dosya sonuna denk gelirse, akımın dosyasonu belirteci temizlenir, çünkü artık akımda okunacak bir karakter vardır. Karakteri okuduktan sonra tekrar dosyasonu saptanacaktır.
wint_t ungetwc
(wint_t wc,
 FILE  *akım)
işlev
ungetwc işlevi ungetc işlevi ile bir geniş karakterle çalışması dışında tamamen aynıdır.
Aşağıdaki örnekte getc ve ungetc işlevleri akımdaki boşluk karakterlerini ayıklamakta kullanılmıştır. İşlev rastladığı boşluk olmayan her karakteri akıma geri iter. Böylece akım daha sonra okunduğunda bu karakterler okunmamış olarak yeniden okunabilir.
#include <stdio.h>
#include <ctype.h>

void
skip_whitespace (FILE *stream)
{
  int c;
  do
    /* EOF için bir sınama yapmaya gerek yoktur,
       çünkü ungetc EOF'u yoksayar.  */
    c = getc (stream);
  while (isspace (c));
  ungetc (c, stream);
}
Önceki Üst Ana Başlık Sonraki
Okunmamış Yapmak Ne Demek Başlangıç Blok Girişi ve Çıkışı
Bir Linux Kitaplığı Sayfası