ungetc, ungetwcungetc, ungetwc

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

구문Syntax

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

매개 변수Parameters

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

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

반환 값Return Value

성공 하면 이러한 각 함수 반환 문자 인수 c합니다.If successful, each of these functions returns the character argument c. c를 다시 푸시할 수 없거나 읽은 문자가 없는 경우에는 입력 스트림이 변경되지 않으며 ungetcEOF를 반환하고 ungetwcWEOF를 반환합니다.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, 및 _sys_nerr을 참조하세요.For information on these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

설명Remarks

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

ungetc에 의해 스트림에 배치되는 문자는 스트림에서 해당 문자를 읽기 전에 fflush, fseek, fsetpos 또는 rewind를 호출하는 경우 지워질 수 있습니다.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. 텍스트 스트림에 대해 ungetc가 정상적으로 호출되어도 다시 푸시된 모든 문자를 읽거나 삭제할 때까지 파일 위치 표시기는 지정되지 않습니다.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. 이진 스트림에 대해 각 ungetc를 정상적으로 호출하면 파일 위치 표시기가 감소합니다. 호출 전에 표시기의 값이 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를 호출한 후에 ungetc를 호출하면 getc 등의 다른 읽기 작업이 수행되지 않은 경우 호출이 실패할 수 있습니다.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.

제네릭 텍스트 루틴 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_ungettc ungetc ungetc ungetwc

요구 사항Requirements

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

콘솔 유니버설 Windows 플랫폼 (UWP) 응용 프로그램에서 지원 되지 않습니다.The console is not supported in Universal Windows Platform (UWP) apps. 콘솔을 사용 하는 연결 된 표준 스트림 핸들 stdin, stdout, 및 stderr, 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. 호환성에 대한 자세한 내용은 호환성을 참조하세요.For additional compatibility information, see Compatibility.

Example

// 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/O Stream I/O
getc, getwc getc, getwc
putc, putwcputc, putwc