컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post C언어] 이진파일 읽기; 바이너리 파일 읽기전용으로 열기; Open, Read Binary...Java/자바] 문자열 삭제, 일부 문자열만 지우기; Remove, Delete Strin...Linux/리눅스] 화면 캡처, 데스크탑 화면을 파일로 저장, 갈무리; Screen Cap...Linux/리눅스] 워드프로세서; 오픈 오피스 (OpenOffice) - Writer 스냅...Linux/리눅스] gedit; 메모장에 해당하는 간단한 텍스트 에디터; 지에디터 스냇샵Perl/펄] 숫자를 영어 스펠링으로 변환; 영어식으로 읽기; Number to Engli...HTML-CSS] 글자 테두리, 점선/색깔 테두리 태그와 스타일 속성; Word Borde...HTML-CSS] 이미지/사진에 스크롤바 붙여, 좁은 화면에 모두 표시하기; IMG Scr...Java/자바] split()에서 Tab(탭 문자) 구분자; 마침표를 구분 기호로서 분리Java/자바] split 메서드 사용법 예제; 문자열을 배열로 변환, String to ...

C언어] 이진파일 쓰기/바이너리 파일 만들기 예제; Make, Write Binary File

Monday, November 13, 2006

out.bin 이라는 이진파일을 만들어서, 그 안에 이진 데이터를 쓰는 방법입니다. out.bin 이라는 파일이 현재 디렉토리에 이미 있다면 덮어쓰게 됩니다.


이진파일 저장 / Binary 로 저장 예제


파일명: 0.cpp
#include <stdio.h>
#include <stdlib.h> // exit()

int main(void) {

  FILE *out;

  // 새로 만들 이진파일의 내용을 바이트 배열로 표현
  unsigned char array[] = { 0x02, 0x74, 0x21, 0x6A, 0x02, 0x6A, 0xFF, 0x53, 0xE8, 0x8F, 0x0E, 0x00, 0x00, 0x83, 0xC4, 0xFF };


  // 이진파일 쓰기용으로 열기, 없다면 새로 만들고
  if ( (out = fopen("out.bin", "wb")) == NULL ) {
    fputs("파일 열기 에러!", stderr);
    exit(1);
  }


  // 이진 파일에, array[] 배열의 요소를 하나씩 쓰기
  for (int i = 0; i < ( sizeof(array) / sizeof(array[0]) ); i++) {
    if (fputc(array[i], out) == EOF) {
      fputs("파일 쓰기 에러!", stderr);
      exit(2);
    }
  }

  fclose(out); // 파일 닫기
  return 0;
}


if ( (out = fopen("out.bin", "wb")) == NULL ) {...
에서 "wb" 의

"w" 는 "쓰기 모드"

"b" 는 이진파일 모드를 의미합니다. 즉, 쓰기 모드로 이진파일을 열라는 뜻인데, "out.bin" 파일이 없다면 새로 만들고, 이미 있다면 덮어씁니다.


sizeof(array) / sizeof(array[0])
이것은 배열 요소의 개수를 구하는 것입니다. 이렇게 구하지 않고, 상수로서 직접 배열 요소 개수를 지정해 주어도 됩니다.


if (fputc(array[i], out) == EOF) {...
fputc() 함수로 파일에 1바이트씩 데이터를 저장합니다.
파일을 쓰다가 에러가 나면 강제 종료합니다.



위의 예제를 실행하면, 현재 디렉토리에 out.bin 이라는 파일명의 16바이트짜리 이진파일이 생길 것입니다.

그 파일을 메모장으로 보면 이상한 문자들이 적혀 있을 것이고,

헥사 뷰어로 보면 다음과 같을 것입니다:
00000000:  02 74 21 6A 02 6A FF 53  E8 8F 0E 00 00 83 C4 FF  .t!j.j.S........




▶▶ C언어] 이진파일 읽기; 바이너리 파일 읽기전용으로 열기; Open, Read Binary File

☞ C/C++

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top