[C]getchar & fgetc
- getchar함수는 문자열 출력함수입니다.
- fgetc함수는 스트림에 문자열을 읽는 함수입니다.
1️⃣ 함수원형
< getchar >
int getchar(void);
< fgetc >
int fgetc(FILE* stream);
2️⃣ 헤더파일, 반환값
- 헤더파일: <stdio.h>
반환값:
성공 실패 getchar 읽어들인 문자 EOF(-1) fgetc 읽어들인 문자 EOF(-1)
3️⃣ 함수사용
(1) getchar
int main(void)
{
int c;
while ((c = getchar()) != EOF)
{
putchar(c);
}
}
- 이와같이 while문안에 조건을 넣는 코드는 실수할 가능성이 큽니다.
아래 코드와 같이 if문으로 처리하는 방법이 실수를 줄이는 방법입니다.int main(void) { int c; while(1) { if ((c = getchar()) == EOF) break; putchar(c); } }
- 일반적으로 EOF입력은
Ctrl + Z
로 가능하며 리눅스에서는Ctrl + D
입니다.
(2) fgetc
< test.txt내용 >
nice to meet you!
< fgetc >
int main(void)
{
FILE *stream;
int c;
stream = fopen("test.txt","r");
while(1)
{
if ((c = fgetc(stream)) == EOF)
break;
putchar(c);
}
fclose(stream);
}
/*---출력---*/
Hello my name is kirim!
nice to meet you!
4️⃣ 특징 & 주의사항
< 한글자씩 읽는 함수 >
- 입력이 문자/문자열일 때 좋은 함수입니다.
- 메모리에 입력값을 저장해두지 않아도됩니다.(용량절약, 실수줄임)
- 정수형숫자(다른 데이터형)을 읽는 것이 힘듭니다.