尝试打印出封装在另一个结构中的结构的数据类型

时间:2013-12-13 20:17:39

标签: c struct

我只是想知道是否有人知道如何解决我在尝试打印出封装在另一个结构中的结构的数据类型“char []”的值时遇到的问题。任何建议都会受到赞赏,因为我已经花了好几个小时试图解决这个问题。提前致谢, 错误im gettinng是警告:(格式'%s'需要类型为'char *'的参数,但参数2的类型为'int')

  struct food_stuff
  {
      char name [30];
      int calories;
      int foodtype;
      int price;
  };

  typedef enum food_groups food_groups;

  struct food_plan_item
      {
          food_stuff fs;
          int qty;
      };    

  typedef struct food_plan_item food_plan_item;  


  void print_food_line_items(food_plan_item *fpi)
  {

      for(int i =0 ; i<fpi_count;i++)
      {
            printf("%s", *(fpi+fpi_count)->fs.name);
      }

  }

3 个答案:

答案 0 :(得分:1)

你在行

中有一个额外的取消引用
printf("%s", *(fpi+fpi_count)->fs.name);

fpi->fs.name返回char *指针; *fpi->fs.name返回数组的第一个char,它是一个值(强制转换为int)而不是指针。

答案 1 :(得分:0)

如果您有以下结构定义:

typedef struct
{
    char name[30];
    int calories;
    int foodtype;
    int price;
} food_stuff;

typedef struct
{
    food_stuff fs;
    int qty;
} food_plan_item;

您可以访问food_plan_item结构的字段,如下所示:

food_plan_item fpi;
food_plan_item *pFpi = &fpi;

fpi.qty;
fpi.fs.name[0];
fpi.fs.calories;
fpi.fs.foodtype;
fpi.fs.price;

pFpi->qty;
pFpi->fs.name[0];
pFpi->fs.calories;
pFpi->fs.foodtype;
pFpi->fs.price;

第一个显示直接访问结构。第二个显示通过指针访问结构。

答案 2 :(得分:0)

*(fpi + fpi_count).fs.name我猜