Связанный список в файле read \ write - PullRequest
0 голосов
/ 25 июня 2019

У меня есть проект в 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 голосов
/ 25 июня 2019

Вы можете создать функции 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;
}
0 голосов
/ 25 июня 2019

Сохранение потребует от вас записи в файл. Вы можете пройтись по связанному списку и на каждом узле записать в файл что-то вроде (name,duration,path), а затем открыть его, просто прочитав из файла. См. эту страницу руководства для получения информации о том, как читать и писать из файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...