ungetc, ungetwcungetc, ungetwc

스트림에 문자를 다시 푸시합니다.Pushes a character back onto the stream.


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

매개 변수Parameters

푸시할 문자 수입니다.Character to be pushed.

FILE 구조체에 대한 포인터입니다.Pointer to FILE structure.

Return ValueReturn Value

성공 하는 경우 이러한 각 함수는 문자 인수 c를 반환 합니다.If successful, each of these functions returns the character argument c. C 를 다시 푸시할 수 없거나 문자를 읽지 않은 경우 입력 스트림은 변경 되지 않으며 UngetcEOF를 반환 합니다. Ungetwc 는 weof를반환 합니다.If c cannot be pushed back or if no character has been read, the input stream is unchanged and ungetc returns EOF; ungetwc returns WEOF. StreamNULL인 경우 매개 변수 유효성 검사에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 됩니다.If stream is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 계속 해 서 실행 하도록 허용한 경우 EOF 또는 weof 가 반환 되 고 errnoEINVAL로 설정 됩니다.If execution is allowed to continue, EOF or WEOF is returned and errno is set to EINVAL.

이러한 오류 코드 및 기타 오류 코드에 대한 내용은 _doserrno, errno, _sys_errlist, and _sys_nerr을 참조하세요.For information on these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.


Ungetc 함수는 c 문자를 다시 스트림으로 푸시하고 파일 끝 표시기를 지웁니다.The ungetc function pushes the character c back onto stream and clears the end-of-file indicator. 이때 스트림이 읽기를 위해 열려 있어야 합니다.The stream must be open for reading. 스트림에서 후속 읽기 작업은 c로 시작 합니다.A subsequent read operation on stream starts with c. Ungetc 를 사용 하는 스트림으로 EOF 를 푸시하는 시도는 무시 됩니다.An attempt to push EOF onto the stream using ungetc is ignored.

스트림에서 문자를 읽기 전에 fflush, fseek, fsetpos또는 되감기 가 호출 되 면 ungetc 에 의해 스트림에 배치 된 문자가 지워질 수 있습니다.Characters placed on the stream by ungetc may be erased if fflush, fseek, fsetpos, or rewind is called before the character is read from the stream. 파일 위치 표시기에는 문자가 다시 푸시되기 전의 값이 지정됩니다.The file-position indicator will have the value it had before the characters were pushed back. 스트림에 해당하는 외부 스토리지는 변경되지 않습니다.The external storage corresponding to the stream is unchanged. 텍스트 스트림에 대해 성공한 getc 호출에서 모든 푸시 문자를 읽거나 삭제할 때까지 파일 위치 표시기는 지정 되지 않습니다.On a successful ungetc call against a text stream, the file-position indicator is unspecified until all the pushed-back characters are read or discarded. 이진 스트림에 대해 각 성공한 getc 호출에서 파일 위치 표시기가 감소 합니다. 호출 전에 해당 값이 0 이면 호출 후에 값이 정의 되지 않습니다.On each successful ungetc call against a binary stream, the file-position indicator is decremented; if its value was 0 before a call, the value is undefined after the call.

두 호출 사이에 읽기 또는 파일 위치 지정 작업 없이 ungetc 를 두 번 호출 하는 경우 결과를 예측할 수 없습니다.Results are unpredictable if ungetc is called twice without a read or file-positioning operation between the two calls. Fscanf를 호출한 후에는 다른 읽기 작업 (예: getc)을 수행 하지 않으면 ungetc 에 대 한 호출이 실패할 수 있습니다.After a call to fscanf, a call to ungetc may fail unless another read operation (such as getc) has been performed. Fscanf 자체가 ungetc를 호출 하기 때문입니다.This is because fscanf itself calls ungetc.

ungetwcungetc의 와이드 문자 버전입니다.ungetwc is a wide-character version of ungetc. 그러나 텍스트 또는 이진 스트림에 대해 성공한 각 ungetwc 호출에서는 모든 푸시 문자를 읽거나 삭제할 때까지 파일 위치 표시기의 값이 지정 되지 않습니다.However, on each successful ungetwc call against a text or binary stream, the value of the file-position indicator is unspecified until all pushed-back characters are read or discarded.

이러한 함수는 스레드로부터 안전하며, 실행 중에 중요한 데이터를 잠급니다.These functions are thread-safe and lock sensitive data during execution. 데이터를 잠그지 않는 버전은 _ungetc_nolock, _ungetwc_nolock을 참조하세요.For a non-locking version, see _ungetc_nolock, _ungetwc_nolock.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

제네릭 텍스트 라우팅 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_ungettc_ungettc ungetcungetc ungetcungetc ungetwcungetwc

요구 사항Requirements

루틴에서 반환된 값Routine 필수 헤더Required header
ungetcungetc <stdio.h><stdio.h>
ungetwcungetwc <stdio.h> 또는 <wchar.h><stdio.h> or <wchar.h>

이 콘솔은 UWP (유니버설 Windows 플랫폼) 앱에서 지원 되지 않습니다.The console is not supported in Universal Windows Platform (UWP) apps. 콘솔, stdin, stdoutstderr에 연결 된 표준 스트림 핸들은 C 런타임 함수가 UWP 앱에서 사용할 수 있으려면 먼저 리디렉션해야 합니다.The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. 호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.


// 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'

참조See also

스트림 I/OStream I/O
getc, getwcgetc, getwc
putc, putwcputc, putwc