Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 텍스트 파일의 줄 수 세는 프로그램 작성 방법

이번 글에서는 C 프로그래밍을 활용해 텍스트 파일에 담긴 전체 줄 수를 구하는 방법을 살펴보겠습니다.


이 프로그램은 지정한 파일을 연 뒤 내용을 한 문자씩 읽어 들이고, 마지막에 파일의 총 줄 수를 출력합니다. 줄 수를 세는 핵심 아이디어는 간단합니다. 바로 개행 문자(\n)가 등장할 때마다 카운트를 1씩 증가시키는 것입니다.

입력:
파일 "test.txt"
    Hello friends, how are you?
    This is a sample file to get line numbers from the file.
출력:
총 줄 수: 2

동작 원리

프로그램의 동작 과정은 다음과 같습니다.

  1. 파일 열기: fopen() 함수로 파일을 읽기 모드("r")로 엽니다.
  2. 오류 처리: fopen()이 NULL을 반환하면 파일이 존재하지 않거나 열 수 없는 것이므로 오류 메시지를 출력하고 프로그램을 종료합니다.
  3. 줄 수 카운트: fgetc() 함수로 파일 끝(EOF)에 도달할 때까지 한 문자씩 읽으면서, 개행 문자('\n')를 만날 때마다 카운터 변수(linesCount)를 1씩 증가시킵니다.
  4. 결과 출력: 읽기가 끝나면 fclose()로 파일을 닫고, printf()로 총 줄 수를 화면에 출력합니다.

예제 코드

#include <stdio.h>
#define FILENAME "test.txt"

int main() {
    FILE *fp;
    char ch;
    int linesCount = 0;

    // 파일을 읽기 모드로 열기
    fp = fopen(FILENAME, "r");
    if (fp == NULL) {
        printf("File \"%s\" does not exist!!!\n", FILENAME);
        return -1;
    }

    // 한 문자씩 읽으면서 개행 문자 확인
    while ((ch = fgetc(fp)) != EOF) {
        if (ch == '\n')
            linesCount++;
    }

    // 파일 닫기
    fclose(fp);

    // 줄 수 출력
    printf("Total number of lines are: %d\n", linesCount);
    return 0;
}

참고 사항

  • 파일의 마지막 줄이 개행 문자 없이 끝난다면 해당 줄은 카운트되지 않습니다. 필요하다면 반복문이 끝난 뒤 마지막으로 읽은 문자가 '\n'이 아니었는지 검사하는 로직을 추가하면 됩니다.
  • fgetc()의 반환값에는 EOF(-1)가 포함될 수 있으므로, char형보다는 int형 변수에 저장하는 것이 더 안전합니다.

이처럼 개행 문자의 개수만 세면 되기 때문에 구현이 매우 간단하지만, 로그 파일 분석 등 실무에서도 자주 활용되는 기본적인 파일 처리 기법입니다.