ungetc
, ungetwc
Mendorong kembali karakter ke aliran.
Sintaks
int ungetc(
int c,
FILE *stream
);
wint_t ungetwc(
wint_t c,
FILE *stream
);
Parameter
c
Karakter yang akan didorong.
stream
Penunjuk ke FILE
struktur.
Nilai hasil
Jika berhasil, masing-masing fungsi ini mengembalikan argumen c
karakter . Jika c
tidak dapat didorong kembali atau jika tidak ada karakter yang dibaca, aliran input tidak berubah dan ungetc
mengembalikan EOF
; ungetwc
mengembalikan WEOF
. Jika stream
adalah NULL
, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, EOF
atau WEOF
dikembalikan, dan errno
diatur ke EINVAL
.
Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Keterangan
Fungsi ini ungetc
mendorong karakter c
kembali ke stream
dan menghapus indikator akhir file. Aliran harus terbuka untuk dibaca. Operasi baca berikutnya dimulai stream
dengan c
. Upaya untuk mendorong EOF
ke aliran menggunakan ungetc
diabaikan.
Karakter yang ditempatkan pada aliran oleh ungetc
dapat dihapus jika fflush
, , fseek
, fsetpos
atau rewind
dipanggil sebelum karakter dibaca dari aliran. Indikator posisi file akan memiliki nilai sebelum karakter didorong kembali. Penyimpanan eksternal yang sesuai dengan aliran tidak berubah. Pada panggilan yang berhasil ungetc
terhadap aliran teks, indikator posisi file tidak ditentukan hingga semua karakter yang didorong kembali dibaca atau dibuang. Pada setiap panggilan yang berhasil ungetc
terhadap aliran biner, indikator posisi file dikurangi; jika nilainya adalah 0 sebelum panggilan, nilainya tidak ditentukan setelah panggilan.
Hasil tidak dapat diprediksi jika ungetc
dipanggil dua kali tanpa operasi baca atau posisi file antara dua panggilan. Setelah panggilan ke fscanf
, panggilan ke ungetc
mungkin gagal kecuali operasi baca lain (seperti getc
) telah dilakukan, karena fscanf
panggilan itu ungetc
sendiri .
ungetwc
adalah versi karakter luas dari ungetc
. Namun, pada setiap panggilan yang berhasil ungetwc
terhadap teks atau aliran biner, nilai indikator posisi file tidak ditentukan sampai semua karakter yang didorong kembali dibaca atau dibuang.
Fungsi-fungsi ini aman utas dan mengunci data sensitif selama eksekusi. Untuk versi non-penguncian, lihat _ungetc_nolock
, _ungetwc_nolock
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR. Rutinitas H | _UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_ungettc |
ungetc |
ungetc |
ungetwc |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
ungetc |
<stdio.h> |
ungetwc |
<stdio.h> atau <wchar.h> |
Konsol tidak didukung di aplikasi Platform Windows Universal (UWP). Handel aliran standar yang terkait dengan konsol, , stdin
, stdout
dan stderr
, harus dialihkan sebelum fungsi run-time C dapat menggunakannya di aplikasi UWP. Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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'
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk