【问题标题】:C Data structure how to declareC数据结构如何声明
【发布时间】:2013-10-25 16:23:40
【问题描述】:

我被困在如何操作数据结构上。

我有这样声明的头文件

struct item{
 int    i;  
 char   str[88];
};

我有一个 C 文件,我想创建 9 个结构项(我声明为全局变量并且我已经包含了头文件):

struct item a[9];

但是当我想把我想要的数据放进去时

foo()

    {
    ...
      // let's say I have data int in index and char[] in string
      // and I want it to put at item_index

      a[item_index].i = index;
      a[item_index].str = string;
    ...
    }

但是当我尝试编译时,它似乎总是显示

error: expected an identifiler

【问题讨论】:

  • 您需要使用strcpy 分配给str - strcpy(a[item_index].str, string)
  • 你基本上做对了一切。唯一的问题是你不能只用“=”分配一个C字符串;您需要使用“strcpy()”之类的函数。

标签: c data-structures struct


【解决方案1】:
a[item_index].str = string;

这条线不会像您期望的那样运行。您需要使用strcpy() 来复制字符串:

strcpy(a[item_index].str, string)

【讨论】:

    【解决方案2】:

    数组名称是一个不可修改的(只读)变量,或者更好的说法是常量。

    在此声明中:

    a[item_index].str = string;

    您尝试修改数组str,这是不允许的。

    您可以为每个索引一一分配值(这是strcpy所做的),
    或者声明一个指针*str而不是数组,然后分配你想要的任何地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2018-05-13
      • 2021-12-03
      • 2021-12-13
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多