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

C 언어 파일 입출력으로 정수 데이터 다루기: 홀수·짝수 자동 분류 프로그램

프로그램 개요

이 프로그램은 하나의 파일에 저장된 정수 데이터를 읽어 들여 홀수짝수를 자동으로 분류한 뒤, 각각 별도의 파일에 저장하는 C 언어 예제입니다. 즉, 홀수는 ODD 파일에, 짝수는 EVEN 파일에 기록됩니다.

전체적인 동작 흐름은 다음과 같습니다.

  • 먼저 DATA 파일을 쓰기 모드(w)로 열고 숫자를 입력받아 저장한 후 닫습니다.
  • 다음으로 DATA 파일을 읽기 모드(r)로, ODD 파일과 EVEN 파일을 쓰기 모드로 엽니다.
  • while 반복문을 이용해 DATA 파일의 내용을 하나씩 읽으면서 홀수인지 짝수인지 판별하고, 결과를 각각의 파일에 기록합니다.
  • 마지막으로 모든 파일을 닫고, ODD 파일과 EVEN 파일의 내용을 화면에 출력해 확인합니다.

C 프로그램 소스 코드

다음은 파일 개념을 활용해 정수 데이터 파일을 처리하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    FILE *f1,*f2,*f3;
    int number,i;
    printf("DATA file content is\n");
    f1=fopen("DATA","w");// DATA 파일 생성(쓰기 모드)
    for(i=1;i<=10;i++){
        scanf("%d",&number);
        if(number==-1)
            break;
        putw(number,f1); // 정수를 파일에 저장
    }
    fclose(f1);
    f1=fopen("DATA","r"); // DATA 파일 읽기 모드
    f2=fopen("ODD","w");  // ODD 파일 쓰기 모드
    f3=fopen("EVEN","w"); // EVEN 파일 쓰기 모드
    while((number=getw(f1))!=EOF){ // DATA 파일에서 한 단어씩 읽기
        if(number %2 ==0)
            putw(number,f3); // 짝수는 EVEN 파일에 기록
        else
            putw(number,f2); // 홀수는 ODD 파일에 기록
    }
    fclose(f1);
    fclose(f2);
    fclose(f3);
    f2=fopen("ODD","r");
    f3=fopen("EVEN","r");
    printf("\n contents of ODD file:\n");
    while((number=getw(f2))!=EOF)
        printf("%3d",number);
    printf("\n contents of EVEN file:\n");
    while((number=getw(f3))!=EOF)
        printf("%3d",number);
    fclose(f2);
    fclose(f3);
    return 0;
}

핵심 포인트

  • fopen(): 파일을 지정한 모드(w: 쓰기, r: 읽기)로 열며, 성공 시 FILE 포인터를 반환합니다.
  • putw(): 정수 값을 파일에 한 단어(word) 단위로 기록하는 함수입니다.
  • getw(): 파일에서 정수를 한 단어씩 읽어오며, 더 이상 읽을 데이터가 없으면 EOF를 반환합니다.
  • fclose(): 작업이 끝난 파일을 닫아 버퍼의 내용을 안전하게 디스크에 저장합니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 출력을 얻을 수 있습니다.

DATA file content is
1
2
3
4
5
6
7
8
9
10
contents of ODD file:
  1  3  5  7  9
contents of EVEN file:
  2  4  6  8 10