C++用fwrite fread读写二进制文件

C/C++ fwrite fread 函数使用

#include <iostream>
#include <fstream>
#include <cstring>
#include "fileTest.h"

using namespace std;

struct RgbaHeader{
    int width = 0;
    int height = 0;
    int size = 0;
};

struct RgbaData{
    uint32_t rgbSize = 0;
    uint32_t alphaSize = 0;
    unsigned char rgb[8];
    unsigned char alpha[4];
};

int writeFile(){
    RgbaData rgbaData;
    rgbaData.rgbSize = 16;
    rgbaData.alphaSize = 4;
    strcpy(reinterpret_cast<char *>(rgbaData.rgb), "abc");
    strcpy(reinterpret_cast<char *>(rgbaData.alpha), "dd");
    RgbaData * p_rgbaData = &rgbaData;

    FILE *fp;
    if((fp = fopen("../cfileTest.txt", "wb")) == NULL){
        cout << "can't open this file!" << endl;
    }

    if(fwrite(p_rgbaData, sizeof(RgbaData), 1, fp) != 1){
        cout << "file write error!" << endl;
    }

    fclose(fp);
    return 0;

}

int readFile(){
    RgbaData * rgbaData = new RgbaData;
    FILE *fp;
    if((fp = fopen("../cfileTest.txt", "r")) == NULL){
        cout << "can't open this file!" << endl;
    }

    if(fread(rgbaData, sizeof(RgbaData), 1, fp) != 1){
        cout << "file write error!" << endl;
    }
    cout << rgbaData->rgbSize << endl;
    return 0;
}

int main(){
    cout << "fileTest..." << endl;
    //writeFile();
    readFile();
    return 0;


}

猜你喜欢

转载自blog.csdn.net/alspd_zhangpan/article/details/107673494