文件读\写中的链接列表

时间:2019-06-25 09:20:49

标签: c file linked-list

我在C中有一个做电影制作人的项目,我放了一些相框,我需要选择保存该项目并再次打开它,然后再次输入相框,我该怎么做?

这是结构

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


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

这是我需要做的选项,除了保存和打开选项外,我已经做了所有其他事情

开放路径 新增框架 取下框架 更改框架索引 更改帧时长 更改所有帧的持续时间 列出框架 播放电影! 保存项目

2 个答案:

答案 0 :(得分:0)

保存将需要您写入文件。您可以单步执行链接列表,并在每个节点上将文件(name,duration,path)的形式写到文件中,然后打开该文件即可。有关如何从文件读取和写入信息,请参见this tutorial page

答案 1 :(得分:0)

您可以创建一个save和一个load函数:

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;
}