ungetc, ungetwc

Karakteri akışa geri iter.

int ungetc(
   int c,
   FILE *stream 
);
wint_t ungetwc(
   wint_t c,
   FILE *stream 
);

Parametreler

  • c
    İtilecek karakter.

  • stream
    FILE yapısı işaretçisi.

Dönüş Değeri

Başarılı olursa bu işlevlerden her biri c *karakteri bağımsız değişkenini döndürür.*c geri itilemiyorsa veya herhangi bir karakter okunmamışsa, giriş akışı değiştirilmez ve ungetcEOF döndürür; ungetwc ise WEOF döndürür.stream öğesi NULL ise, Parametre Doğrulama içinde açıklandığı şekilde geçersiz parametre işleyicisi çağrılır.Yürütmenin devam etmesine izin verilirse, EOF veya WEOF döndürülür ve errno öğesi EINVAL olarak ayarlanır.

Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz. _doserrno, errno, _sys_errlist ve _sys_nerr.

Notlar

ungetc işlevi, c karakterini stream'e geri iter ve dosya sonu göstergesini temizler.Akışın okunmak için açık olması gerekir.stream ile ilgili sonraki okuma işlemi c*öğesi ile başlar.*ungetc kullanarak EOF öğesini akışa itmeyi denemek gözardı edilir.

ungetc öğesine göre akışa yerleştirilen karakterler, fflush, fseek, fsetpos veya rewind karakter akıştan okunmadan önce çağrılırsa silinebilir.Dosya konum göstergesi karakterler geri itilmeden önceki değerine sahip olacaktır.Akışa karşılık gelen dış depo değişmeden kalır.Metin akışına yönelik başarılık bir ungetc çağrısında, tüm geri itilen karakterler okunana veya atılana kadar dosya konumu göstergesi belirtilmemiş durumda kalır.İkili akışa yönelik her başarılı ungetc çağrısında, dosya konumu göstergesi azaltılır; çağrıdan önce göstergenin değeri 0 olduğunda, çağrıdan sonra değer tanımsız olur.

Arada bir okuma veya dosyada konumlanma işlemi yapılmadan ungetc iki kez çağrılırsa, beklenmeyen sonuçlar ortaya çıkabilir.fscanf öğesine çağrıdan sonra, başka bir okuma işlemi (getc gibi) gerçekleştirilinceye kadar, ungetc öğesine çağrı başarısız olabilir.Bunun sebebi fscanf kendisinin ungetc çağırmasıdır.

ungetwc, ungetc öğesinin geniş karakterli bir sürümüdür.Ancak, bir metin veya ikili akışa karşı yapılan her bir başarılı ungetwc çağrısında, tüm geri itilen karakterler okunana veya atılana kadar dosya konu göstergesinin değeri belirtilmez.

Bu işlevler iş parçacığı bakımından güvenlidir ve yürütme sırasında hassas verileri kilitler.Kilitleme yapılmayan bir sürüm için, bkz. _ungetc_nolock, _ungetwc_nolock.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_ungettc

ungetc

ungetc

ungetwc

Gereksinimler

Yordam

Gerekli başlık

ungetc

<stdio.h>

ungetwc

<stdio.h> or <wchar.h>

Konsol Windows Mağazası uygulamalarında desteklenmiyor.stdin, stdout ve stderr konsolları ile ilişkili standart akış işleyicileri, C çalışma zamanı işlevleri bunları Windows Mağazası uygulamalarında kullanmadan önce yeniden yönlendirilmelidir.Ek uyumluluk bilgileri için bkz. Uyumluluk.

Örnek

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'", 
            result, getchar() );
}
  

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Akış G/Ç

getc, getwc

putc, putwc