언어 자료구조 알고리즘/C11 표준 라이브러리 함수

fread 함수 [C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 15:10
반응형

fread


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - STDIO.H

size_t fread ( void * base, size_t size, size_t count, FILE * fp); 파일 스트림에서 데이터를 읽는 함수
 
입력 매개 변수 리스트
base 데이터를 읽어올 버퍼
size 읽어올 데이터 하나의 크기
count 읽어올 데이터 개수
fp 입력 파일 스트림
반환 값
읽어온 데이터 개수
 
fread 함수는 요청한 데이터 개수보다 반환 값이 작다고 오류가 아니며 파일에 데이터를 모두 읽어온 것입니다.
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//size_t fwrite ( const void * base, size_t size, size_t count, FILE * fp); 파일 스트림에 데이터를 쓰는 함수
//회원 데이터 배열의 내용을 파일에 기록하고 다시 읽어와서 출력
#include <stdio.h>
 
#define MAX_NAME_LEN    20
typedef struct{
    char name[MAX_NAME_LEN+1];
    int age;
}Member;
 
#define MAX_MEMBERS 10
int main (void)
{
    FILE * fp;
    int i;
    Member members[MAX_MEMBERS]=
    {
        {"홍길동",20},{"강감찬",15},{"을지문덕",22},{"이순신",19},{"김구",30},
        {"안중근",30},{"박찬호",35},{"김연아",17},{"아이유",20},{"주니엘",20}       
    };
    Member members2[MAX_MEMBERS];
 
    //쓰기 모드로 파일 열기
    fopen_s (&fp,"data.txt","wb");
    if (fp==NULL)
    {
        perror ("error fopen");
        return;
    }
    //출력 파일 스트림에 members 배열의 내용 출력
    if(fwrite(members,sizeof(Member),MAX_MEMBERS,fp) != MAX_MEMBERS)
    {
        printf("출력 오류\n");
        return;
    }
    fclose (fp);//출력 파일 스트림 닫기
 
    //읽기 모드로 파일 열기
    fopen_s (&fp,"data.txt","rb");
    if (fp==NULL)
    {
        perror ("error fopen");
        return;
    }
 
    //파일에서 members2 배열로 데이터 읽기
    fread(members2,sizeof(Member),MAX_MEMBERS,fp);
    //읽어온 데이터 출력
    printf("%-10s %-10s\n","이름","나이");
    for(i=0;i<MAX_MEMBERS; i++)
    {       
        printf("%-10s %-10d\n",members2[i].name,members2[i].age);
    } 
    fclose (fp); //입력 파일 스트림 닫기

    return 0;
}
 
출력
이름      나이
홍길동    20
강감찬    15
을지문덕  22
이순신    19
김구      30
안중근    30
박찬호    35
김연아    17
아이유    20
주니엘    20
 
새로 만들어진 output.txt 내용
홍길동               ?   강감찬               ?   을지문덕             ?   이순신               ?   김구                 ?   안중근               ?   박찬호               ?   김연아               ?   아이유               ?   주니엘               ?

 


사용한 함수

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - fopen_s

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - perror

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - printf

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - fclose 

반응형