C 似乎可以在结构中传递结构,有什么想法吗?

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:警告:

每次我尝试初始化一个结构以放入一个名为“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]”的初始化状态)[默认情况下已启用]

我一辈子都搞不清楚出了什么问题。我真的很感激有人对我所缺少的东西发表意见

  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-是标准库的一部分。在你写更多的;-)之前,先熟悉一下它