728x90
- fwrite(버퍼, 쓰기크기, 쓰기횟수, 파일포인터);
- size_t fwrite(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);
- 성공한 쓰기 횟수를 반환, 실패하면 지정된 쓰기 횟수보다 작은 값을 반환
ㅇ Example
#define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h> // fopen, fwrite, fclose 함수가 선언된 헤더 파일
#pragma pack(push, 1) // 1바이트 크기로 정렬
struct Data {
short num1; // 2바이트
short num2; // 2바이트
short num3; // 2바이트
short num4; // 2바이트
};
#pragma pack(pop) // 정렬 설정을 이전 상태(기본값)로 되돌림
int main()
{
struct Data d1;
d1.num1 = 100;
d1.num2 = 200;
d1.num3 = 300;
d1.num4 = 400;
FILE *fp = fopen("data.bin", "wb"); // 파일을 쓰기/바이너리 모드(wb)로 열기
fwrite(&d1, sizeof(d1), 1, fp); // 구조체의 내용을 파일에 저장
fclose(fp); // 파일 포인터 닫기
return 0;
}
ㅇExample2
#define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h> // fopen, fwrite, fclose 함수가 선언된 헤더 파일
#include <string.h> // strcpy, memset 함수가 선언된 헤더 파일
#pragma pack(push, 1) // 1바이트 크기로 정렬
struct Data {
char c1; // 1바이트
short num1; // 2바이트
int num2; // 4바이트
char s1[20]; // 20바이트
};
#pragma pack(pop) // 정렬 설정을 이전 상태(기본값)로 되돌림
int main()
{
struct Data d1;
memset(&d1, 0, sizeof(d1)); // 구조체 변수의 내용을 0으로 초기화
d1.c1 = 'a'; // 문자 저장
d1.num1 = 32100; // 2바이트 크기의 숫자 저장
d1.num2 = 2100000100; // 4바이트 크기의 숫자 저장
strcpy(d1.s1, "Hello, world!"); // 문자열 저장
FILE *fp = fopen("data2.bin", "wb"); // 파일을 쓰기/바이너리 모드(wb)로 열기
fwrite(&d1, sizeof(d1), 1, fp); // 구조체의 내용을 파일에 저장
fclose(fp); // 파일 포인터 닫기
return 0;
}
- fread(버퍼, 읽기크기, 읽기횟수, 파일포인터);
- size_t fread(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);
- 성공한 읽기 횟수를 반환, 실패하면 지정된 읽기 횟수보다 작은 값을 반환
ㅇExample
#define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>> // fopen, fread, fclose 함수가 선언된 헤더 파일
#pragma pack(push, 1) // 1바이트 크기로 정렬
struct Data {
char c1; // 1바이트
short num1; // 2바이트
int num2; // 4바이트
char s1[20]; // 20바이트
};
#pragma pack(pop) // 정렬 설정을 이전 상태(기본값)로 되돌림
int main()
{
struct Data d1;
FILE *fp = fopen("data2.bin", "rb"); // 파일을 읽기/바이너리 모드(rb)로 열기
fread(&d1, sizeof(d1), 1, fp); // 파일의 내용을 읽어서 구조체 변수에 저장
printf("%c %d %d %s\n", d1.c1, d1.num1, d1.num2, d1.s1); // a 32100 2100000100 Hello, world!
fclose(fp); // 파일 포인터 닫기
return 0;
}
728x90
'고흐의 연구실 > C언어와 C++' 카테고리의 다른 글
[C언어] 조건부 컴파일 #ifdef #endif #if #ifndef (0) | 2020.10.11 |
---|---|
[C언어] 매크로 #define #undef (0) | 2020.10.11 |
[C언어] 파일관련(2) 파일 크기 구하기 fseek(), ftell(), feof() (0) | 2020.09.30 |
[C언어] 파일관련(1) fopen(), frpintf(), fclose(), fscanf() (0) | 2020.09.17 |
[C언어] 복합 리터럴, 배열 매개변수 요소의 최소 개수 지정 (0) | 2020.09.12 |