Standard C

C 언어 fgetc 사용법 완벽 가이드

레퍼러 2025. 2. 22. 13:44

fgetc 함수는 C 언어에서 파일에서 문자를 하나씩 읽을 때 사용됩니다. 파일 처리에서 데이터를 문자 단위로 읽어야 할 때 유용하게 사용됩니다.


1. fgetc 함수 기본 문법

#include <stdio.h>

int fgetc(FILE *stream);

매개변수 설명:

  • stream: 문자를 읽을 파일 포인터입니다.

반환 값:

  • 읽은 문자(정수형, unsigned char로 변환됨)
  • EOF: 파일 끝에 도달했거나 오류가 발생한 경우

2. fgetc 사용 목적

  • 파일에서 문자 단위 데이터 읽기
  • 텍스트 파일의 내용을 한 글자씩 분석
  • 읽기 과정 중 EOF 및 오류 처리

3. 기본 사용 예제

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (!file) {
        perror("파일 열기 실패");
        return 1;
    }

    int ch;
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);
    }

    fclose(file);
    return 0;
}

출력 결과:

(파일의 내용이 한 글자씩 출력됩니다.)

4. 실전 활용 예제

4.1. 특정 문자 개수 세기

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (!file) {
        perror("파일 열기 실패");
        return 1;
    }

    int ch, count = 0;
    while ((ch = fgetc(file)) != EOF) {
        if (ch == 'a') count++;
    }

    printf("문자 'a'의 개수: %d\\n", count);

    fclose(file);
    return 0;
}

출력 결과:

문자 'a'의 개수: (개수)

4.2. 파일의 첫 번째 줄 읽기

#include <stdio.h>

int main() {
    FILE *file = fopen("sample.txt", "r");
    if (!file) {
        perror("파일 열기 실패");
        return 1;
    }

    int ch;
    while ((ch = fgetc(file)) != EOF && ch != '\\n') {
        putchar(ch);
    }

    fclose(file);
    return 0;
}

출력 결과:

(파일의 첫 번째 줄 내용 출력)

5. fgetc 사용 시 주의할 점

  1. EOF 처리: fgetc는 파일 끝에 도달하거나 오류가 발생하면 EOF를 반환합니다. feofferror를 사용하여 EOF와 오류를 구분하세요.
  2. 문자형 변환 주의: 반환된 값은 int형이지만, 실제 문자는 unsigned char로 변환됩니다.
  3. 읽기 속도: 대용량 파일에서는 fgetc의 반복 호출이 비효율적일 수 있습니다. 필요한 경우 버퍼링 기법을 사용하세요.

6. 오류 처리 예제

#include <stdio.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    if (!file) {
        perror("파일 열기 실패");
        return 1;
    }

    int ch = fgetc(file);
    if (ch == EOF) {
        if (feof(file)) {
            printf("파일 끝에 도달했습니다.\\n");
        } else if (ferror(file)) {
            printf("파일 읽기 중 오류가 발생했습니다.\\n");
        }
    }

    fclose(file);
    return 0;
}

출력 결과:

파일 열기 실패: No such file or directory

7. 결론

fgetc 함수는 파일에서 문자를 한 글자씩 읽어들이는 가장 기본적인 함수입니다. 텍스트 처리, 파일 분석, 문자 기반 데이터 처리 등의 작업에 유용합니다. fgetc를 적절히 사용하여 파일 입출력의 기초를 다져 보세요.