Aracılığıyla paylaş


ungetc, ungetwc

Bir karakteri akışa geri gönderir.

Sözdizimi

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

Parametreler

c
Gönderilecek karakter.

stream
Yapı işaretçisi FILE .

Dönüş değeri

Başarılı olursa, bu işlevlerin her biri karakter bağımsız değişkenini cdöndürür. Geri gönderilemiyorsa c veya hiçbir karakter okunmamışsa, giriş akışı değişmez ve ungetc döndürür EOF; ungetwc döndürür WEOF. ise streamNULL, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam EOF etmesi için izin verilirse veya WEOF döndürülürse ve errno olarak EINVALayarlanırsa.

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

Açıklamalar

ungetc işlevi karakteri c geri stream gönderir ve dosya sonu göstergesini temizler. Akışın okunması için açık olması gerekir. Sonraki bir okuma işlemi stream ile cbaşlar. kullanarak ungetc akışa gönderme EOF girişimi yoksayılır.

tarafından akışa ungetc yerleştirilen karakterler, karakter akıştan okunmadan önce , fseek, fsetposveya rewind çağrılırsa fflushsilinebilir. Dosya konumu göstergesi, karakterler geri gönderilmeden önce sahip olduğu değere sahip olur. Akışa karşılık gelen dış depolama değişmemiştir. Metin akışına karşı yapılan başarılı ungetc bir çağrıda, tüm geri gönderilen karakterler okunana veya atılana kadar dosya konumu göstergesi belirtilmez. İkili bir akışa karşı yapılan her başarılı ungetc çağrıda, dosya konumu göstergesi azalmıştır; değeri bir çağrıdan önce 0 ise, çağrıdan sonra değer tanımlanmamış olur.

İki çağrı arasında okuma veya dosya konumlandırma işlemi olmadan iki kez çağrılırsa ungetc sonuçlar tahmin edilemez. çağrısından fscanfsonra, başka bir ungetc okuma işlemi (örneğin getc) gerçekleştirilmediği sürece çağrısı başarısız olabilir çünkü fscanf kendisi öğesini çağırır ungetc.

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

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

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_ungettc ungetc ungetc ungetwc

Gereksinimler

Yordam Gerekli başlık
ungetc <stdio.h>
ungetwc <stdio.h> veya <wchar.h>

Konsol Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez. C çalışma zamanı işlevlerinin UWP uygulamalarında kullanabilmesi için önce konsolu stdin, , stdoutve stderrile ilişkilendirilmiş standart akış tanıtıcılarının yeniden yönlendirilmesi gerekir. Daha fazla uyumluluk bilgisi 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() );
}

      521aNumber = 521
Next character in stream = 'a'

Ayrıca bkz.

Akış G/Ç
getc, getwc
putc, putwc