将字符串文字分配给数组时出错

时间:2015-04-28 09:14:00

标签: c string pointers

我将结构定义如下:

typedef PACKED struct
{
    UINT8   pedo_config[5]; // 0: male 1: Non 2:weight 3:stepLen 4:height

    INT8 local_name[LOCAL_NAME_LEN_MAX];

}  HOSTINFO;

HOSTINFO hello_sensor_hostinfo;

但警告

  

警告:赋值在没有强制转换的情况下从指针生成整数[默认启用]

发生在hello_sensor_hostinfo.local_name[0]="AAA";

我还尝试将INT8 local_name[LOCAL_NAME_LEN_MAX];更改为char local_name[LOCAL_NAME_LEN_MAX];

但警告仍然存在。

我错过了什么吗?发生警告的原因是什么?

1 个答案:

答案 0 :(得分:3)

您未在C中分配字符串

您需要使用strcpy()将字符串lieral复制到数组中。

此外,如果您选中,hello_sensor_hostinfo.local_name[0]的数据类型为INT8,而"AAA"代表char*字符串文字的基地)。因此不匹配。

FWIW,在您的情况下,INT8 local_name[LOCAL_NAME_LEN_MAX];是一个编译时数组。通过使用赋值运算符=,您基本上尝试更改数组的基址,这是不允许的。您可以将local_name定义为指针,然后您可以为其分配字符串文字。像

这样的东西
typedef PACKED struct
{
    UINT8   pedo_config[5]; // 0: male 1: Non 2:weight 3:stepLen 4:height

    INT8 * local_name;

}  HOSTINFO;

HOSTINFO hello_sensor_hostinfo;

hello_sensor_hostinfo.local_name="AAA";