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

C 언어 fgets()와 fputs() 함수 완벽 정리: 파일 입출력 기초부터 예제까지

파일(File)은 여러 레코드(record)의 집합이며, 데이터를 영구적으로 저장하는 하드 디스크상의 공간을 의미합니다. 프로그램이 종료된 후에도 데이터를 보관해야 한다면 파일 입출력은 필수적인 개념입니다.

C 언어에서의 파일 연산

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

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

파일 열기 문법

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

FILE *파일포인터;

예를 들면 다음과 같습니다.

FILE *fptr;

파일을 열 때는 fopen() 함수를 사용하며, 문법은 아래와 같습니다.

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

실제 사용 예시입니다.

fptr = fopen("sample.txt", "r");   // 읽기 모드로 열기
FILE *fp;
fp = fopen("sample.txt", "w");     // 쓰기 모드로 열기

여기서 "r"은 읽기(read) 모드, "w"는 쓰기(write) 모드를 나타냅니다. 쓰기 모드로 파일을 열 경우 해당 파일이 없으면 새로 생성되고, 이미 존재하면 기존 내용이 삭제됩니다.

fgets() 함수: 파일에서 문자열 읽기

fgets() 함수는 파일에서 문자열(string)을 읽어 올 때 사용합니다.

fgets() 함수의 문법은 다음과 같습니다.

fgets(문자열변수, 문자 수, 파일포인터);

사용 예시입니다.

FILE *fp;
char str[30];
fgets(str, 30, fp);

위 코드는 fp가 가리키는 파일에서 최대 29개의 문자(마지막 한 칸은 널 문자 '\0'을 위해 남겨둠) 또는 줄바꿈 문자를 만날 때까지 읽어 str 배열에 저장합니다.

fputs() 함수: 파일에 문자열 쓰기

fputs() 함수는 파일에 문자열을 쓸 때 사용합니다.

fputs() 함수의 문법은 다음과 같습니다.

fputs(문자열변수, 파일포인터);

사용 예시입니다.

FILE *fp;
char str[30];
fputs(str, fp);

전체 예제 프로그램

다음은 fputs() 함수로 파일에 문자열을 쓰고, fgets() 함수로 다시 읽어 화면에 출력하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    FILE *fptr = fopen("sample.txt","w");
    fputs("TutorialPoints\n",fptr);
    fputs("C programming\n",fptr);
    fputs("Question & Answers",fptr);
    fclose(fptr);
    fptr = fopen("sample.txt","r");
    char string[30];
    while(fgets(string,30,fptr)!=NULL){
        printf("%s",string);
    }
    fclose(fptr);
    return 0;
}

프로그램 동작 설명

  1. 먼저 sample.txt 파일을 쓰기 모드(w)로 엽니다.
  2. fputs() 함수를 세 번 호출하여 각각의 문자열을 파일에 기록합니다.
  3. fclose()로 파일을 닫아 버퍼의 내용을 디스크에 저장합니다.
  4. 같은 파일을 다시 읽기 모드(r)로 엽니다.
  5. while 루프에서 fgets()가 NULL을 반환할 때까지(즉, 파일 끝에 도달할 때까지) 한 줄씩 읽어 printf()로 출력합니다.
  6. 마지막으로 파일을 닫고 프로그램을 종료합니다.

실행 결과

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

TutorialPoints
C programming
Question & Answers

정리

fgets()와 fputs()는 C 언어에서 텍스트 파일을 다룰 때 가장 기본적이면서도 널리 사용되는 함수입니다. fgets()는 파일에서 안전하게 한 줄씩 읽어 들이고, fputs()는 문자열을 파일에 손쉽게 기록할 수 있습니다. 두 함수를 fopen(), fclose()와 함께 사용하면 파일 입출력 로직을 깔끔하고 효율적으로 구현할 수 있습니다.