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

C 언어에서 파일이 필요한 이유와 파일 입출력 기본 사용법

파일(File)이란 레코드(record)들의 집합을 의미하며, 데이터를 영구적으로 저장하는 하드 디스크상의 저장 공간입니다. C 언어에서는 다양한 명령어를 통해 파일에 접근하고 여러 방식으로 데이터를 다룰 수 있습니다.

C 언어에서 파일이 필요한 이유

  • 프로그램이 종료되면 메모리에 있던 모든 데이터는 사라지지만, 파일에 저장해 두면 프로그램이 종료된 후에도 데이터를 그대로 보존할 수 있습니다.

  • 대량의 데이터를 입력해야 할 경우, 매번 직접 입력하는 데에는 많은 시간이 소요됩니다.

  • 모든 데이터가 담긴 파일이 있다면, C 언어의 몇 가지 명령만으로도 손쉽게 파일 내용에 접근할 수 있습니다.

  • 데이터를 변경 없이 한 컴퓨터에서 다른 컴퓨터로 손쉽게 옮길 수 있습니다.

파일에 수행할 수 있는 주요 작업

C 언어에서 파일에 대해 수행할 수 있는 대표적인 연산은 다음과 같습니다.

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

파일 열기 및 이름 지정 문법

파일 포인터 선언 형식은 다음과 같습니다.

FILE *File pointer;

예시:

FILE *fptr;

fopen() 함수를 사용하여 파일을 여는 형식은 다음과 같습니다.

File pointer = fopen("파일 이름", "모드");

예시:

fptr = fopen("sample.txt", "r");

읽기 모드("r")와 쓰기 모드("w")를 활용한 실제 코드 예시입니다.

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

파일 읽기 및 쓰기 문법

파일에서 문자 읽기 형식은 다음과 같습니다.

int fgetc(FILE *fp); // 파일에서 한 글자씩 읽어옵니다

파일에 문자 쓰기 형식은 다음과 같습니다.

int fputc(int c, FILE *fp); // 스트림에 개별 문자를 씁니다

예제 프로그램

다음은 C 언어에서 파일 입출력을 보여주는 예제 프로그램입니다. 사용자로부터 직원 정보를 입력받아 파일에 저장한 후, 다시 파일에서 읽어 화면에 출력합니다.

#include<stdio.h>
void main(){
    // 파일 선언
    FILE *femp;
    char empname[50];
    int empnum;
    float empsal;
    char temp;
    // 파일을 쓰기 모드로 열기
    femp=fopen("Employee Details.txt","w");
    // 사용자 입력 받기
    printf("Enter the name of employee : ");
    gets(empname);
    printf("Enter the number of employee : ");
    scanf("%d",&empnum);
    printf("Enter the salary of employee : ");
    scanf("%f",&empsal);
    // 사용자 입력값을 파일에 쓰기
    fprintf(femp,"%s\n",empname);
    fprintf(femp,"%d\n",empnum);
    fprintf(femp,"%f\n",empsal);
    // 파일 닫기
    fclose(femp);
    // 파일을 읽기 모드로 다시 열기
    femp=fopen("Employee Details.txt","r");
    // 파일에서 데이터 읽기
    fscanf(femp,"%s",empname);
    // 결과 출력
    printf("employee name is : %s\n",empname);
    printf("employee number is : %d\n",empnum);
    printf("employee salary is : %f\n",empsal);
    // 파일 닫기
    fclose(femp);
}

참고: gets() 함수는 버퍼 오버플로우 위험 때문에 표준에서 제거되었으므로, 실무에서는 fgets(empname, sizeof(empname), stdin) 사용을 권장합니다. 또한 파일을 열었을 때 반환 값이 NULL인지 확인하는 오류 처리를 함께 작성하면 더욱 안전한 코드가 됩니다.

실행 결과

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

Enter the name of employee : Pinky
Enter the number of employee : 20
Enter the salary of employee : 5000
employee name is : Pinky
employee number is : 20
employee salary is : 5000.000000