2017/C 프로그래밍
[C 프로그래밍] 파일 출력 함수_2.바이너리 모드
반원_SemiCircle
2017. 2. 19. 00:11
#1 바이너리 모드의 특징
- 메모리에 저장된 2진수(binary)값을 직접 읽고 쓴다.
- 변수를 파일에 저장하려면, 바이너리 값을 쓰고 읽으면 된다.
- 바이너리 값을 파일에 읽고 쓰려면, b 를 붙여주면 된다.(rb, wb)
//바이너리 읽기 모드 fopen("data.txt","rb"); //바이너리 쓰기 모드 fopen("data.txt","wb");
//바이너리 파일 읽어오기 size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream); //바이너리 파일에 쓰기 size_t fwrite( void *ptr, size_t size, size_t nitems, FILE *stream);
#3 구조체 구조를 파일을 저장하기
- 바이너리 정보를 저장하면 구조체를 저장 할 수 있다.
연습 3-1
1. 정수형 필드 변수 val1, 부동소수형 필드 변수 val2를 가진 Node를 하나 선언하자.
#include <stdio.h> #include <stdlib.h> struct Node{ int val; float val2; }
2. 1을 토대로 다음 코드를 작성한다.
void main(){ FILE *fp; //파일 포인터 선언 struct Node *item; //구조체 변수 선언 fp = fopen("data.txt","wb"); //data.txt 파일을 바이너리 쓰기 모드로 오픈 //구조체 값 설정 item = (struct Node*)malloc(sizeof(struct Node)); item->val1 = 1; item->val2 = 2.1f; //구조체의 값을 파일에 저장 fwrite((void*)item, sizeof(struct Node), 1, fp); //파일 포인터 해제 fclose(fp); }
#4 파일에 저장되어 있는 값 읽어오기
연습 4-1
void main(){ // 파일 포인터 선언 FILE *fp; struct Node *item; // data.txt 파일을 바이너리 읽기 모드로 오픈 fp = fopen("data.txt", "rb"); // 파일에서 읽어온 값을 구조체에 저장 item = (struct Node*)malloc(sizeof(struct Node)); fread((void*)item, sizeof(struct Node), 1, fp); //파일에서 불러온 구조체의 값을 화면에 출력 printf(" item->val1 = %d\n", item->val1); printf(" item->val2 = %.2f\n", item->val2); fclose(fp); //파일 포인터 해제 }
#5 다음 포스팅에서는 연결 리스트를 파일에 저장하고 불러오는 방법을 다룬다.