함수 기능
fread
사이즈 크기를 갖는 데이터를 한 단위로하여 nobj인자만큼 읽도록 하는 함수
fwrite
size크기만큼의 데이터를 nobj 인자만큼 출력
함수 원형
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nobj, FILE *fp);
size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp);
함수 파라메터
ptr
읽고 쓸 데이터 위치
size
크기
nobj
얼마만큼 읽을 것인가
fp
파일포인터
함수 예제
fread
#include<stdio.h>
#include<stdlib.h>
struct ssu_pirate {
unsigned long booty;
unsigned int beard_length;
char name[128]
};
int main(void){
struct ssu_pirate blackbeard ={950, 48, "Edward Teach"},pirate;
char *fname = "ssu_data";
FILE *fp1, *fp2;
if((fp2=fopen(fname,"w"))==NULL){
fprintf(stderr, "fopen error for %s\n",fname);
exit(1);
}
if(fwrite(&blackbeard, sizeof(struct ssu_pirate),1,fp2)!=1){
fprintf(stderr, "fwrite error\n");
exit(1);
}
if(fclose(fp2)){
fprintf(stderr, "fclose error\n");
exit(1);
}
if((fp1 = fopen(fname,"r"))==NULL){
fprintf(stderr, "fopen error\n");
exit(1);
}
if(fread(&pirate,sizeof(struct ssu_pirate),1,fp1)!=1){
fprintf(stderr, "fread error\n");
exit(1);
}
if(fclose(fp1)){
fprintf(stderr, "fclose error\n");
exit(1);
}
printf("name=\"%s\" booty=%lu beard_length=%u\n",pirate.name,pirate.booty,pirate.beard_length);
exit(0);
}
fwrite
#include<stdio.h>
#include<stdlib.h>
struct ssu_id {
char name[64];
int id;
};
int main(void){
struct ssu_id test1, test2;
char *fname = "ssu_exam.dat";
FILE *fp;
if ((fp=fopen(fname,"w"))==NULL){
fprintf(stderr, "fopen error for %s\n",fname);
exit(1);
}
printf("Input ID>> ");
scanf("%d", &test1.id);
printf("Input name>> ");
scanf("%s",test1.name);
if(fwrite(&test1, sizeof(struct ssu_id), 1,fp)!=1){
fprintf(stderr, "fwrite error\n");
exit(1);
}
fclose(fp);
if((fp=fopen(fname,"r"))==NULL){
fprintf(stderr, "fopen error for %s\n",fname);
exit(1);
}
if(fread(&test2, sizeof(struct ssu_id),1,fp)!=1){
fprintf(stderr,"fread error\n");
exit(1);
}
printf("\nID name\n");
printf(" ============\n");
printf("%d %s\n", test2.id, test2.name);
fclose(fp);
exit(0);
}
함수 결과
fread
fwrite
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX printf(3) fprintf(3) (0) | 2022.05.02 |
---|---|
C / LINUX ftell(3) fseek(3) rewind(3) (0) | 2022.05.02 |
C / LINUX stat() fstat() lstat() (0) | 2022.05.01 |
C / LINUX dup() dup2() (0) | 2022.05.01 |
C / LINUX write() (0) | 2022.05.01 |