C、 从文件创建单向链表



工作正常。我只是很笨,在一个地方写了=而不是==。谢谢大家。

我有一个包含我的数据的文件,现在我想读取它并将其放入列表中。我不完全知道该怎么做,因为我必须在不久的将来完成这个项目,我只是向你寻求帮助;]

头文件:

typedef struct
{
    char category[50];
    char name[50];
    char ingredients[50]; 
    char instruction[1000];
}recipe_t;

typedef struct element
{
    struct element *next;
    recipe_t recipe;
} el_list;
void all_recipe_list();
void show_all_list(el_list *list);
void add_new_element_to_list(el_list *list, recipe_t formula);

我的列表函数文件:

void all_recipe_list() //reading all record into list + show it(show_all_list function)
{
FILE *database;
recipe_t formula;
el_list *head;
        head = NULL; 
    database = fopen(filename, "rb");
        fgetc(database);        // function feof returns value only if we read something before, so in order to check if its end, we try to read one char 
                                // when writing data to file, I put n always before new record 
    while (!feof(database))
    {
        fread(&formula, sizeof(recipe_t),1,database);   
        if (head == NULL)
        {   
            head = malloc(sizeof(el_list));
            head->recipe = formula;
            head->next = NULL;
        }
        else
        {
        add_new_element_to_list(head,formula);
        }
        fgetc(database);    // same as above
    }
    fclose(database);

        show_all_list(head);
}

void show_all_list(el_list *list)
{
el_list *p=list;
    while (p != NULL)
    {
        printf("Kategoria:%sn", p->recipe.category);
        printf("Nazwa:%sn", p->recipe.name);
        printf("Skaldniki:%sn", p->recipe.ingredients);
        printf("Instrukcja:%sn", p->recipe.instruction);
        p = p->next;
    }
}
void add_new_element_to_list(el_list *list, recipe_t formula)
{
el_list *p, *new_el;
        p = list;
        while (p->next != NULL)
        {
            p = p->next;
        }
        new_el = malloc(sizeof(el_list));
        new_el->recipe = formula;
        new_el->next = NULL;
        p->next= new_el;
}

有什么问题?程序正在正确编译,但当调用all_recipe_list时,它会崩溃。add_new_element_to_list可能有问题。但不知道是什么。此外,我不知道在show_all_list p->recipe.category中是否是正确的方法。

add_new_element_to_list()中,此行:

new_el->recipe;

应为:

new_el->recipe = recipe;

我想。

尝试将add_new_element_to_list()函数中的行new_el->recipe;更改为new_el->recipe = recipe;

相关内容

  • 没有找到相关文章

最新更新