getc() – getchar() — 문자 읽기
형식
#include <stdio.h>
int getc(FILE *stream);
int getchar(void);
언어 레벨
ANSI
스레드세이프
아니오
#undef getc 또는 #undef
getchar은 getc 또는
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 );
}