C言語バイナリ方式ファイルデータの読み書き

2369 ワード

fwrite(buffer,size,count,fp):指定したファイルにいくつかのデータ項目をバイナリ形式で書き込み(countで決定)、実際に書き込まれたデータ項目の数を返します.各パラメータの意味は以下の通りです.
buffer:ファイルに保存されたデータであり、配列またはポインタタイプであってもよい記憶領域の開始アドレス.
size:単一データ項目のサイズ(単位:バイト);
count:データ項目数;
fp:FILEタイプポインタで、対応するファイルはデータ保存の「宛先」である.
#include 
#include 

int main(){
    struct Student{
        char name [10];
        int num;
        int age;
        char addr [30];
    } stud [10];

    FILE * output  = fopen("D:\\stud.dat","wb");//   stud.dat          ,     “  ”。

    if(output == NULL){
        printf("      ");
        exit(0);
    }

    for(int i=0;i<10;++i){
        scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
        fwrite(&stud[i],sizeof(struct Student),1,output);
    }
    fclose(output);
    return 0;
}

fread(buffer,size,count,fp):指定したファイルからいくつかのデータ項目をバイナリ形式で読み出し(countによって決定される)、実際に読み込まれたデータ項目の個数(count以下)、不成功またはファイルの末尾に0を返すように呼び出す.各パラメータの意味は以下の通りである.
buffer:ファイルから読み込まれたデータを保存するためのストレージ領域の開始アドレスで、配列またはポインタタイプであってもよい.
size:単一データ項目のサイズ(単位:バイト);
count:データ項目数;
fp:FILEタイプのポインタで、対応するファイルはデータの「ソース」である.
#include 
#include 

int main(){
    struct Student{
        char name [10];
        int num;
        int age;
        char addr [30];
    } stud [10];

    FILE * input = fopen("D:\\stud.dat","rb");

    if(input == NULL){
        printf("      ");
        exit(0);
    }

    for(int i=0;i<10;++i){
        fread(&stud[i],sizeof(struct Student),1/*  1    */,input);
        printf("%s %d %d %s
",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); } fclose(input); return 0; }
#include 
#include 

int main(){
    struct Student{
        char name [10];
        int num;
        int age;
        char addr [30];
    } stud [5];

    FILE * input = fopen("D:\\stud.dat","rb");

    if(input == NULL){
        printf("      ");
        exit(0);
    }

    int validCount;//         
    while((validCount = fread(stud,sizeof(struct Student),5/*    5    */,input))!=0){
        for(int i=0;i