Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 정규화
  • BOJ
  • 프로세스
  • 트랜잭션
  • 인덱스
  • 우아한테크코스5기
  • 데이터 조작어
  • bean
  • 우테코 체스
  • OperatingSystem
  • DB
  • signal
  • C
  • OS
  • SIGINT
  • 우아한형제들
  • Operating System
  • 우아한테크코스
  • 백준
  • 우테코
  • 블랙잭
  • 원시값 포장
  • C++
  • Spring
  • 자바
  • 우테코5기
  • 1259
  • Linux
  • 리눅스
  • 운영체제

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

C / LINUX  fread(3), fwrite(3)
C & LINUX

C / LINUX fread(3), fwrite(3)

2022. 5. 2. 12:17

함수 기능

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
    'C & LINUX' 카테고리의 다른 글
    • C / LINUX printf(3) fprintf(3)
    • C / LINUX ftell(3) fseek(3) rewind(3)
    • C / LINUX stat() fstat() lstat()
    • C / LINUX dup() dup2()
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바