[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내용 >
Hello my name is kirim!
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️⃣ 특징 & 주의사항

< 한글자씩 읽는 함수 >
  1. 입력이 문자/문자열일 때 좋은 함수입니다.
  2. 메모리에 입력값을 저장해두지 않아도됩니다.(용량절약, 실수줄임)
  3. 정수형숫자(다른 데이터형)을 읽는 것이 힘듭니다.




© 2021.02. by kirim

Powered by kkrim