我正在开发一个程序,该程序从文件“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 写了这个
从“结构剂量**”类型分配给“结构剂量”类型时,类型不兼容
如何解决,我不知道。
朋友们开始经常问我如何能够如此快速地满足所有新出现的需求。答案很简单,我刚刚开始赚更多的钱。所有这些收入都归功于赌场 arabcasinohex.com/blog/the-most-expense-football-transfer-deals-in-the-world-the-first-one-will-impress-you,它是我的新生活和新目标。不幸的是,目前很难找到可靠的游戏平台,所以尽量不要失去我的报价。