簡體   English   中英

如何使用fread讀取二進制文件?

[英]How could I read a binary file using fread?

 typedef struct
{
    char*title;
    char* year;
    char* length; //in minutes
} record;

void write(record* list[])
{
    FILE* out=fopen("output.bin","a");
    if(!out)
    {
        printf("error"); exit(1);
    }else
    {
        int i;
        for (i = 0; i < 1024; i++)
        {
            if(list[i]!=NULL)
                fwrite(list[i], sizeof(record), 1, out);
        }
        fclose(out);
    }
}
void read_back()
{
    FILE* input=fopen("output.bin","r");
    if(!input)
    {
        printf("error"); exit(1);
    }else
    {
        record* temp[1024];
        fread(temp,sizeof(record)*1024,1,input);


        fclose(input);
    }

}

如何使用fread讀取二進制文件? 有人可以檢查我是否使用fwrite正確嗎? 我希望我的read_back方法以結構形式顯示內容(標題,年份等)。

record結構元素定義為pointer s。 fread不能隱式分配那些指針。 對於record結構中的每個元素,應顯式讀取值,並應在通過malloc分配內存后分配相關值。

fwrite只會以這種方式將內存地址寫入內存 ,因為record結構里面只有指針

有兩種選擇

定義靜態數組定義,如下所示

 typedef struct
{
    char title[256];
    char year[4];
    char length[8]; //in minutes
} record;

要么

record結構元素與引用一一對應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM