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

cc
푸시할 문자 수입니다.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 다시 푸시할 수 또는 입력된 스트림의 문자가 읽은 경우 변경 되지 않습니다 및 ungetc 반환 * * EOF; **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. 경우 스트림NULL에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사합니다.If stream is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 실행을 계속 하도록 허용 하는 경우 EOF 또는 WEOF 반환 되 고 errno 로 설정 되어 EINVAL합니다.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 다시에 스트림 파일 끝 표시기를 지웁니다.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. 푸시 하려고 EOF 에 사용 하 여 스트림의 ungetc 는 무시 됩니다.An attempt to push EOF onto the stream using ungetc is ignored.

문자가 배치 하 여 스트림에서 ungetc 경우 삭제 될 수 있습니다 fflush, fseek, fsetpos, 또는 되감기 스트림에서 문자를 읽기 전에 호출 됩니다.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.

ungetwc 의 와이드 문자 버전이 ungetc합니다.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_ungettc ungetcungetc ungetcungetc ungetwcungetwc

요구 사항Requirements

루틴Routine 필수 헤더Required header
ungetcungetc <stdio.h><stdio.h>
ungetwcungetwc <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/OStream I/O
getc, getwcgetc, getwc
putc, putwcputc, putwc