簡體   English   中英

文件讀\\寫中的鏈表

[英]Linked list in file read\write

我在 c 中有一個項目來制作電影制作人,我放了幀,我需要選擇保存項目並再次打開它並再次輸入幀,我該怎么做?

這是結構

typedef struct Frame
{
char*       name;
unsigned int    duration;
char*       path;  
} Frame;


// Link (node) struct
typedef struct FrameNode
{
    Frame* frame;
    struct FrameNode* next;
} FrameNode;

這是我需要做的選項,除了保存和打開選項,我都做了

打開路徑 添加新幀 刪除幀 更改幀索引 更改幀持續時間 更改所有幀的持續時間 列表幀 播放電影! 保存項目

保存將要求您寫入文件。 您可以單步執行您的鏈表,並在每個節點向文件寫入某種形式(name,duration,path) ,然后打開您只需從文件中讀取即可。 有關如何讀取和寫入文件的信息,請參閱本教程頁面

您可以創建saveload功能:

void save(Frame frame){
    FILE *file = fopen("/path/to/save.txt", "w");
    if(file != NULL){
        fwrite(&frame, sizeof(Frame), 1, file);
        fclose(file);   
    }
    else
        printf("Error %d\n", errno);
}

Frame load(void){
    Frame frame;
    FILE *file = fopen("path/to/save.txt", "r");
    if(file != NULL){
        fread(&frame, sizeof(Frame), 1, file);
        fclose(file);
    }
    else
        printf("Error %d\n", errno);
    return frame;
}

然后在您的main功能中:

int main(void){ 
    Frame f = {
        .name = "my_frame", 
        .duration = 60, 
        .path = "/path/to/frame"
    };
    save(f);
    Frame g = load(); // It will load f to g
    printf("%s %d %s\n", g.name, g.duration, g.path);
    return 0;
}

暫無
暫無

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

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