C 上的 struct 任务中的结构

问题描述 投票:0回答:1

我正在开发一个程序,该程序从文件“stockroom.txt”和“products.txt”获取信息,然后将文件中的数据存储在以下类型的结构中:

// data from "stockroom.txt"
struct ingredient {
    char* name;
    int number;
};
struct dose {
    int index;
    int amount;
};
// here data from products.txt
struct recipe {
    char* name;
    int price;
    int number_ing;
    int current_price;
    int best_price;
    struct dose* ingredients;
};

因此,当我想读取文件“products.txt”并将其数据存储到结构中时,就会出现问题。特别是,我有以下功能:

void read_recipes(int nr, int ni, struct recipe* recipes[], struct ingredient* ingredients[], FILE* products){
    int i, j, k;
    for (i = 0; i < nr; i++){
        char tmp_s[31];
        int tmp_n, n;
    
        fscanf(products, "%s %d %d", tmp_s, &tmp_n, &n);
        recipes[i] = (struct recipe *)malloc(sizeof(struct recipe));
        recipes[i] -> name = strdup(tmp_s);
        recipes[i] -> price = tmp_n;
        recipes[i] -> number_ing = n;
        recipes[i] -> current_price = 0;
        recipes[i] -> best_price = 0;
        recipes[i] -> ingredients = NULL;

        for(j = 0; j < n; j ++){
            char tmp_name[21];
            int tmp_amount;
            struct dose* doses[n];
            doses[j] = (struct dose*)malloc(sizeof(struct dose));
            fscanf(products, "%s %d", tmp_name, &tmp_amount);
            for(k = 0; k < ni; k++){
                if(strcmp(ingredients[k] -> name, tmp_name) == 0){
                    doses[j] -> index = k;
                    doses[j] -> amount = tmp_amount;
                }
            }
            recipes[i] -> ingredients = doses; // error here?
        }
    }
}

可能错误在最后一行,但我不确定。让我澄清一下我想要什么。

文件“stockroom.txt”包含以下内容:


6 面粉35 糖40 鸡蛋20个 牛奶25 可可48 果酱10


第二个文件:


3 复活节彩蛋 6 2 可可8 牛奶3 萨赫蛋糕 22 3 面粉4 可可14 果酱2 含羞草蛋糕 13 5 鸡蛋 3 面粉4 糖6 牛奶4 果酱2


结构剂量*成分包含产品的库房索引和产品的数量。然而,通过调试我了解到它并没有保存所有信息,而只保存最后一行。请帮助我。

代码的最后一行,我期待错误,gcc 写了这个

从“结构剂量**”类型分配给“结构剂量”类型时,类型不兼容

如何解决,我不知道。

c function pointers text struct
1个回答
0
投票

朋友们开始经常问我如何能够如此快速地满足所有新出现的需求。答案很简单,我刚刚开始赚更多的钱。所有这些收入都归功于赌场 arabcasinohex.com/blog/the-most-expense-football-transfer-deals-in-the-world-the-first-one-will-impress-you,它是我的新生活和新目标。不幸的是,目前很难找到可靠的游戏平台,所以尽量不要失去我的报价。

© www.soinside.com 2019 - 2024. All rights reserved.