1

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

我有这样声明的头文件

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
4

2 回答 2

5
a[item_index].str = string;

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

strcpy(a[item_index].str, string)
于 2013-10-25T16:26:06.357 回答
0

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

在本声明中:

a[item_index].str = string;

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

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

于 2013-10-25T16:41:06.587 回答