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

C 언어 파일 입출력의 기본: putc()와 getc() 함수 완벽 정리

파일(file)은 레코드(record)들의 집합이자, 데이터가 영구적으로 저장되는 하드 디스크상의 공간을 의미합니다. C 언어에서는 파일을 활용하면 프로그램이 종료된 후에도 데이터를 보존할 수 있습니다.

C 언어의 주요 파일 연산

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

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

파일 포인터 선언 및 파일 열기 구문

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

FILE *File pointer;

선언 예시:

FILE *fptr;

파일을 여는 구문은 다음과 같습니다.

File pointer = fopen("File name", "mode");

읽기 모드와 쓰기 모드로 파일을 여는 예시:

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

putc()와 getc() 함수란?

putc() 함수는 파일에 한 문자를 쓰기 위해 사용됩니다.

putc() 함수의 구문은 다음과 같습니다.

putc(char ch, FILE *fp);

사용 예시:

FILE *fp;
char ch;
putc(ch, fp);

getc() 함수는 파일에서 한 문자를 읽기 위해 사용됩니다.

getc() 함수의 구문은 다음과 같습니다.

char getc(FILE *fp);

사용 예시:

FILE *fp;
char ch;
ch = getc(fp);

참고로 putc()와 getc()는 표준 라이브러리에서 매크로 형태로 구현되는 경우가 많으며, fputc(), fgetc()와 유사하게 동작합니다. 또한 파일의 끝에 도달하거나 오류가 발생하면 EOF(-1)를 반환하므로, 반복문의 종료 조건으로 활용하기에 매우 적합합니다.

예제 코드

다음은 putc() 함수와 getc() 함수를 활용한 C 프로그램 전체 예제입니다.

#include<stdio.h>
int main(){
    char ch;
    FILE *fp;
    fp=fopen("std1.txt","w"); // 파일을 쓰기 모드로 열기
    printf("enter the text.press cntrl Z:\n");
    while((ch = getchar())!=EOF){
        putc(ch,fp); // 각 문자를 파일에 쓰기
    }
    fclose(fp);
    fp=fopen("std1.txt","r");
    printf("text on the file:\n");
    while ((ch=getc(fp))!=EOF){ // 파일에서 각 문자 읽기
        putchar(ch); // 화면에 각 문자 출력
    }
    fclose(fp);
    return 0;
}

실행 결과

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

enter the text.press cntrl Z:
Hi Welcome to TutorialsPoint
Here I am Presenting Question and answers in C Programming Language
^Z
text on the file:
Hi Welcome to TutorialsPoint
Here I am Presenting Question and answers in C Programming Language

프로그램 동작 흐름 정리

이 프로그램은 두 단계로 동작합니다. 첫 번째 단계에서는 std1.txt 파일을 쓰기 모드("w")로 열고, getchar()로 키보드 입력을 받아 putc() 함수를 통해 한 글자씩 파일에 저장합니다. 사용자가 Ctrl+Z(EOF)를 입력하면 쓰기가 종료되고 fclose()로 파일이 닫힙니다. 두 번째 단계에서는 같은 파일을 읽기 모드("r")로 다시 열어 getc()로 한 글자씩 읽은 뒤 putchar()로 화면에 출력하고, 최종적으로 파일을 닫으며 프로그램이 종료됩니다.