Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 종만북
- 따라하면서 배우는 C언어
- 인프런
- php
- sorting
- dfs
- C
- DP
- udemy
- String
- server
- web
- graph
- 따배씨
- JavaScript
- BASIC
- BOJ
- BFS
- Algorithm
- Math
- Algospot
- greedy
- 따라하며 배우는 C언어
- 백준
- programmers
- C언어
- 생활코딩
- Python
- 정수론
- Cleancode
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 13.5 바이너리 파일 입출력 본문
따배씨 - 따라하며 배우는 C언어
13강 파일 입출력
13.5 바이너리 파일 입출력
#include <stdio.h>
#include <stdlib.h>
int main(void){
/*
fopen() mode tring for binary IO
- "rb, "wb", "ab"
- "ab+", "a+b"
- "wb+", "w+b"
- "ab+" , "a+b"
C11 'x' mode fails if the file exists, insteda of overwriting it.
- "wx", "wbx", "wb+x", "w+bx"
*/
// FILE Writing
{
FILE* fp = fopen("binary_file", "wb");
double d = 1.0 / 3.0;
int n = 123;
int* parr = (int*)malloc(sizeof(int) * n);
if (!parr) exit(1);
for (int n = 0; n < 123; ++n)
*(parr+n) = n * 2;
fwrite(&d, sizeof(d), 1, fp);
fwrite(&n, sizeof(n), 1, fp);
fwrite(parr, sizeof(int), n, fp);
fclose(fp);
free(parr);
// Total size is 8 * 1 + 4 * 1 + 123 * 4 = 504byte
}
// FILE Reading, feof(), ferror()
{
FILE* fp = fopen("binary_file", "rb");
double d;
int n = 0;
fread(&d, sizeof(d), 1, fp);
fread(&n, sizeof(n), 1, fp);
int* parr = (int*)malloc(sizeof(int)*n);
if (!parr) exit(1);
fread(parr, sizeof(int), n, fp);
printf("feof = %n", feof(fp));
// feof = 0
printf("%f\n", d);
// 0.333333
printf("%d\n", n);
// 123
for (int i = 0; i < n; i++)
printf("%d ", *(parr+i));
printf("\n");
// 0 2 4 6 8 10 12 14 16 18 20 22 24 26...
// ...240 242 244
printf("feof = %d\n", feof(fp));
// feof = 0
fread(&n, sizeof(n), 1, fp); // read one more toward EOF
printf("feof = %d\n", feof(fp)); // return snon-zero at EOF
// feof = 1
printf("ferror = %d\n", ferror(fp)); // return 0 : ok
// ferror = 0
fwrite(&n, sizeof(n), 1, fp); // try writing to make an error
printf("ferror = %d\n", ferror(fp)); // 0 is ok, non-zero otherwise
// ferror = 1
fclose(fp);
}
return 0;
}
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
http://blog.naver.com/atelierjpro
http://www.inflearn.com/course/following-c
'Language > C' 카테고리의 다른 글
[따배씨] 13.8 텍스트 파일을 바이너리 처럼 읽어보기 (0) | 2021.06.18 |
---|---|
[따배씨] 13.7 기타 입출력 함수들 (0) | 2021.06.18 |
[따배씨] 13.4 텍스트 파일 모드 스트링과 다양한 입출력 함수들 (0) | 2021.06.18 |
[따배씨] 13.3 텍스트 인코딩과 코드 페이지 (0) | 2021.06.16 |
[따배씨] 13.2 텍스트 파일 입출력 예제 (0) | 2021.06.16 |
Comments