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

C 언어 putw()와 getw() 함수 완벽 가이드 – 파일에 숫자 쓰고 읽기

파일(file)은 레코드(record)들의 집합이자, 데이터를 영구적으로 보관하는 하드 디스크상의 저장 공간입니다. 프로그램이 종료된 후에도 데이터를 유지해야 한다면 파일 입출력은 필수적인 기능입니다.

C 언어에서의 파일 연산

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

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

파일 열기 문법

먼저 파일 포인터를 선언합니다.

FILE *파일포인터;

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

FILE *fptr;

파일 포인터에 실제 파일을 연결(열기)하는 문법은 다음과 같습니다.

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

예시:

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

여기서 "r"은 읽기(read) 모드, "w"는 쓰기(write) 모드를 의미합니다.

putw() 함수란?

putw() 함수는 파일에 정수 하나를 쓰는(저장하는) 데 사용됩니다.

문법

putw(int num, FILE *fp);

예시:

FILE *fp;
int num;
putw(num, fp);

getw() 함수란?

getw() 함수는 파일에서 정수 하나를 읽어오는 데 사용됩니다.

문법

int getw(FILE *fp);

예시:

FILE *fp;
int num;
num = getw(fp);

참고: putw()와 getw()는 표준 C 라이브러리에 포함되지 않은 비표준 함수로, 컴파일러에 따라 지원하지 않을 수 있습니다. 이식성이 중요한 코드라면 fwrite()fread() 사용을 권장합니다.

파일에 숫자 쓰기 로직

1부터 10까지의 숫자를 파일에 저장하는 논리는 다음과 같습니다.

fp = fopen("num.txt", "w");
for (i = 1; i <= 10; i++) {
    putw(i, fp);
}
fclose(fp);

파일에서 숫자 읽기 로직

저장된 숫자를 파일에서 읽어 화면에 출력하는 논리는 다음과 같습니다.

fp = fopen("num.txt", "r");
printf("file content is\n");
for (i = 1; i <= 10; i++) {
    num = getw(fp);
    printf("%d\n", num);
}
fclose(fp);

전체 예제 프로그램

다음은 1부터 10까지의 숫자를 파일에 저장한 뒤, 다시 읽어 그대로 출력하는 완전한 C 프로그램입니다.

#include <stdio.h>

int main() {
    FILE *fp;
    int i, num;

    /* 파일에 숫자 쓰기 */
    fp = fopen("num.txt", "w");
    for (i = 1; i <= 10; i++) {
        putw(i, fp);
    }
    fclose(fp);

    /* 파일에서 숫자 읽기 */
    fp = fopen("num.txt", "r");
    printf("file content is\n");
    for (i = 1; i <= 10; i++) {
        num = getw(fp);
        printf("%d\n", num);
    }
    fclose(fp);

    return 0;
}

실행 결과

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

file content is
1
2
3
4
5
6
7
8
9
10

이처럼 putw()와 getw()를 사용하면 별도의 형식 변환 없이 정수 값을 파일에 직접 저장하고 읽어올 수 있습니다. 단, 두 함수가 비표준이라는 점을 항상 염두에 두고 프로젝트의 요구 사항에 맞게 선택하는 것이 좋습니다.