getc() – getchar() — 문자 읽기

형식

#include <stdio.h>
int getc(FILE *stream);
int getchar(void);

언어 레벨

ANSI

스레드세이프

아니오

#undef getc 또는 #undef getchargetc 또는 getchar 함수를 허용하여 이 함수의 매크로 버전 대신 호출됩니다. 함수는 스레드세이프입니다.

설명

getc() 함수는 현재 stream 위치에서 단일 문자를 읽고 stream 위치를 다음 문자로 이동합니다. getchar() 함수는 getc(stdin)과 같습니다.

getc()fgetc() 함수의 차이는 해당 인수가 여러 번 평가받을 수 있도록 getc()가 구현될 수 있다는 것입니다. 그러므로, getc()에 대한 stream 인수는 파생 작업이 있는 표현식이서는 안됩니다.

리턴값

getc()getchar() 함수는 읽은 문자를 리턴합니다. EOF의 리턴값은 오류 또는 파일의 끝 조건을 표시합니다. 오류 또는 파일의 끝 조건이 발생했는지 여부를 판별하기 위해 ferror() 또는 feof()을 사용하십시오.

errno의 값은 다음으로 설정될 수 있습니다.
의미
EBADF
파일 포인터 또는 설명자는 유효하지 않습니다.
ECONVERT
변환 오류가 발생했습니다.
EGETANDPUT
쓰기 조작 후 허용되지 않는 읽기 조작이 발생했습니다.
EIOERROR
회복 불가능한 I/O 오류가 발생했습니다.
EIORECERR
회복 가능한 I/O 오류가 발생했습니다.

getc()getchar() 함수는 읽기 모드에서 지원되지 않습니다.

이 예는 stdin 스트림으로부터 입력 행을 얻습니다. for문에서 getchar() 대신 getc(stdin)을 사용하여 stdin에서 입력 행을 얻을 수도 있습니다.
#include  <stdio.h>
 
#define LINE 80
 
int main(void)
{
  char buffer[LINE+1];
  int i;
  int ch;
 
  printf( "Please enter string\n" );
 
  /* Keep reading until either:
     1. the length of LINE is exceeded  or
     2. the input character is EOF  or
     3. the input character is a new-line character
   */
 
  for ( i = 0; ( i  < LINE ) && (( ch = getchar()) != EOF) &&
               ( ch !='\n' ); ++i )
    buffer[i] = ch;
 
  buffer[i] = '\0';  /* a string should always end with '\0' ! */
 
  printf( "The string is %s\n", buffer );
}