C 似乎可以在结构中传递结构,有什么想法吗?
每次我尝试初始化一个结构以放入一个名为“mean”的数组(该数组包含一个结构和一个整数)时,它都会给我以下错误: ..\MEIN_plan.c:92:5:警告:初始值设定项周围缺少大括号[-Wmissing brates] ..\mean_plan.c:92:5:warning:(接近“fpi1.fs”的初始化)[-Wmissing-brages] ..\MEIN_plan.c:92:5:警告:初始化从指针生成整数而不进行强制转换[默认情况下启用] ..\mean_plan.c:92:5:警告:(接近“fpi1.fs.name[0]”的初始化状态)[默认情况下已启用] 我一辈子都搞不清楚出了什么问题。我真的很感激有人对我所缺少的东西发表意见C 似乎可以在结构中传递结构,有什么想法吗?,c,struct,C,Struct,每次我尝试初始化一个结构以放入一个名为“mean”的数组(该数组包含一个结构和一个整数)时,它都会给我以下错误: ..\MEIN_plan.c:92:5:警告:初始值设定项周围缺少大括号[-Wmissing brates] ..\mean_plan.c:92:5:warning:(接近“fpi1.fs”的初始化)[-Wmissing-brages] ..\MEIN_plan.c:92:5:警告:初始化从指针生成整数而不进行强制转换[默认情况下启用] ..\mean_plan.c:92:5:警告:
struct food_stuff
{
char name [30];
int foodtype;
int calories;
int price;
};
typedef struct food_stuff food_stuff;
struct food_plan_item
{
food_stuff fs;
int qty;
};
typedef struct food_plan_item food_plan_item;
食物、计划和项目餐[50]
void choose_food_item()
{
puts("Please select one of the available foods:");
puts("-----------------------------------------");
for(int i = 0;i <f_cnt;i++)
{
printf("\t(%d.) %s\n",i, (foodArray+i)->name);
}
puts("-----------------------------------------");
fflush(stdout);
char itemSelection [3];
int chosenitem;
gets(itemSelection);
sscanf(itemSelection,"%d",&chosenitem);
food_stuff *pfs;
pfs = (foodArray+chosenitem);
food_plan_item fpi1 = {pfs,1}; **(LINE 92)**
add_food_plan_item(&fpi1);
}
void add_food_plan_item(food_plan_item *p_fpi)
{
meal[fpi_count] = *p_fpi;
fpi_count++;
}
void选择食物项目()
{
放置(“请选择一种可用食物:”);
认沽权(“----------------------------------------------”;
for(int i=0;i name);
}
认沽权(“----------------------------------------------”;
fflush(stdout);
字符项选择[3];
int chosenitem;
获取(项选择);
sscanf(项目选择、%d、&chosenitem);
食品和原料*pfs;
pfs=(食品+精选项目);
食品计划项目fpi1={pfs,1}**(第92行)**
添加食物计划项目(&fpi1);
}
作废添加食物计划项目(食物计划项目*p\U fpi)
{
膳食[fpi_计数]=*p_fpi;
fpi_计数++;
}
您必须从pfs
指向的内容复制到fpi1.fs
food_plan_item fpi1 = {.qty = 1}; // designated initializer
memcpy(&fpi1.fs, pfs, sizeof(food_stuff));
或者,您可以将food\u plan\u item
的fs
成员声明为指针,然后直接分配指针:
food_stuff *fs;
好的,哪一行是
\mean\u plan.c:92
?food\u plan\u item fpi1={pfs,1};pfs是一个指针。您正在尝试将food\u stuff fs
food\u plan\u item fpi1的成员初始化为指针。我还尝试了以下food\u plan\u item fpi1={&pfs,1};我得到了同样的错误&pfs是指针pfs的地址,这没有帮助。哇,我永远不会得到这个。我以前都没听说过这个功能。非常感谢你,伙计!你是一个legend@user2209521-是标准库的一部分。在你写更多的;-)之前,先熟悉一下它