본문 바로가기
Develop/C

20-2 C 언어 파일의 입출력 심화(바이너리) 예제

by 구운밤이다 2016. 8. 21.
728x90
반응형

2016/08/18 - [IT/C언어] - 20 C 언어 파일의 입출력 예제

이번 시간에는 파일의 입출력 심화과정을 공부해 볼게요! 여기서는 텍스트 파일을 복사해서 새로운 파일에 붙여넣어 보는 것과 바이너리 파일을 읽고 쓰는 방법, 파일 위치 지시자를 이동시키는 방법을 알아보도록 하겠습니다!

먼저 파일을 복사하고 붙여넣는 예제를 보도록 할까요?

이 파일을 가지고 실험해 보도록 하겠습니다! 이 텍스트 파일은 프로젝트 폴더에 소스가 있는 폴더에 넣으면 됩니다!

#include <stdio.h>


int main() {

    

    FILE *src = fopen("ex.txt", "rt");

    FILE *cpy = fopen("cpy.txt", "wt");

    char ch;

    

    while ((ch = fgetc(src)) != EOF) {

        fputc(ch, cpy); // cpy 텍스트 파일에 복붙

    }

    

    if (feof(src) != 0)

        puts("copy finish");

    else

        puts("copy fail");

    

    fclose(src);

    fclose(cpy);

    return 0;

}

이걸 실행시키면

이런 콘솔창이 뜨면서

이렇게 복사가 완료되게 됩니다 저 소스안에 EOF는 end of file의 약자로 파일이 끝나거나 오류가 났을때 반환하는 것입니다! 오류가 났을 때를 대비해서 체크해 줘야 하기 때문에 feof를 사용해서 한 번 더 체크하는 것이구요 feof는 파일의 끝에 다다르면 0이 아닌 값을 반환합니다!

이번엔 바이너리 파일을 읽고 쓰는 방법에 대해서 알아볼게요! 이에 앞서 바이너리 파일이 무엇인지 알아보고 갈게요! 바이너리 파일은 우리나라 말로 이진 파일이라고도 불리는데요! 컴퓨터 저장과 처리 목적을 위해 이진 형식으로 인코딩된 데이터를 포함하는 파일을 말합니다

바이너리 모드로 파일을 열거나 읽는 방법은 따로 있습니다! 바로 fopen으로 연 뒤에 r, a, w 뒤에 b를 붙여서 rb, ab, wb를 하면 되는 거죠 이렇게 열면 파일이 바이너리 모드로 열립니다! 이 이후에는 fread를 사용해서 파일을 읽으면 되는데요! fread의 사용 방법은 다음과 깉습니다!

fread((void*)buf, sizeof(int), 16, src);

이런식으로 쓰면 되요 이 문장의 뜻은 sizeof(int) 이 크기의 데이터 16개를 src로부터 읽어와서 buf라는 배열에 저장하라는 뜻입니다! 그럼 쓸 때는 어떻게 쓰면 될까요? 바로 fwrite를 사용하면 됩니다!


fwrite((void*)buf, sizeof(int), 16, src);

fwrite는 이런 식으로 사용합니다! sizeof(int) 이 크기의 데이터 16개를 src로부터 읽어와서 배열 buf에 저장하라는 뜻이구요!


댓글공감구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.


728x90
반응형

댓글