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

C 언어 파일 읽기 모드 완벽 정리: fopen 사용법부터 줄 수 세기 예제까지

파일(file)은 레코드(record)들의 집합이며, 데이터를 영구적으로 저장해 두는 하드 디스크상의 공간입니다.

파일이 필요한 이유

  • 프로그램이 종료되면 메모리에 있던 모든 데이터가 사라집니다.

  • 파일에 저장해 두면 프로그램이 종료된 후에도 데이터를 그대로 보존할 수 있습니다.

  • 대량의 데이터를 일일이 직접 입력하려면 많은 시간과 노력이 듭니다.

  • 몇 가지 명령어만으로도 파일의 내용에 손쉽게 접근할 수 있습니다.

  • 데이터를 변경하지 않고도 한 컴퓨터에서 다른 컴퓨터로 쉽게 옮길 수 있습니다.

  • C 언어의 명령어를 활용하면 다양한 방식으로 파일에 접근할 수 있습니다.

C 언어에서의 파일 연산

C 프로그래밍 언어에서 파일에 대해 수행할 수 있는 기본 연산은 다음과 같습니다.

  • 파일 이름 지정
  • 파일 열기
  • 파일에서 읽기
  • 파일에 쓰기
  • 파일 닫기

문법

파일 포인터를 선언하는 문법은 다음과 같습니다.

FILE *파일_포인터;

예를 들어 다음과 같이 선언할 수 있습니다.

FILE *fptr;

파일 포인터에 파일 이름과 모드를 지정하여 파일을 여는 문법은 다음과 같습니다.

파일_포인터 = fopen("파일 이름", "모드");

읽기 모드로 파일을 열 때는 아래와 같이 작성합니다.

FILE *fp;
fp = fopen("sample.txt", "r");

파일이 존재하지 않으면 fopen 함수는 NULL을 반환하고, 파일이 존재하면 데이터를 성공적으로 읽어옵니다.

주요 파일 열기 모드

  • "r" : 읽기 전용 모드. 대상 파일이 반드시 미리 존재해야 합니다.
  • "w" : 쓰기 전용 모드. 파일이 없으면 새로 생성하고, 이미 있으면 기존 내용을 모두 지웁니다.
  • "a" : 추가(append) 모드. 기존 내용을 유지한 채 파일 끝에 새 내용을 덧붙입니다.

예제: 파일의 줄 수 세기

다음은 파일을 읽기 모드로 열어 파일 안에 있는 줄의 개수를 세는 C 프로그램입니다.

#include<stdio.h>
#define FILENAME "Employee Details.txt"
int main(){
    FILE *fp;
    char ch;
    int linesCount=0;
    //open file in read more
    fp=fopen(FILENAME,"r"); // already existing need to be open in read mode
    if(fp==NULL){
        printf("File \"%s\" does not exist!!!\n",FILENAME);
        return -1;
    }
    //read character by character and check for new line
    while((ch=getc(fp))!=EOF){
        if(ch=='\n')
            linesCount++;
    }
    //close the file
    fclose(fp);
    //print number of lines
    printf("Total number of lines are: %d\n",linesCount);
    return 0;
}

코드의 주요 흐름을 살펴보면 다음과 같습니다.

  • fopen 함수로 파일을 읽기 모드("r")로 엽니다.
  • 반환값이 NULL이면 파일이 존재하지 않는 것이므로 오류 메시지를 출력하고 프로그램을 종료합니다.
  • getc 함수로 파일을 한 문자씩 읽으면서, 개행 문자('\n')를 만날 때마다 줄 수 카운트를 1씩 증가시킵니다.
  • 파일 끝(EOF)에 도달하면 읽기를 중단하고, fclose로 파일을 닫은 뒤 총 줄 수를 출력합니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Total number of lines are: 3