Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将字符串文字指定给数组时出错_C_String_Pointers - Fatal编程技术网

C 将字符串文字指定给数组时出错

C 将字符串文字指定给数组时出错,c,string,pointers,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\u senso

我对结构的定义如下:

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\u sensor\u hostinfo.local\u name[0]=“AAA”

我还尝试更改
INT8 local_name[local_name_LEN_MAX]
字符本地名称[本地名称\u LEN\u MAX]

但警告仍然存在

我错过什么了吗?为什么会出现警告?

您没有在
C
中分配字符串

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

此外,如果选中,则
hello\u sensor\u hostinfo.local\u name[0]
的数据类型为
INT8
,而
“AAA”
表示
字符*
(字符串文字的基地址)。因此不匹配


FWIW,在您的例子中,
INT8 local_name[local_name_LEN_MAX]
是一个编译时数组。通过使用赋值运算符
=
,您基本上是在尝试更改数组的基址,这是不允许的。您可以将
local\u 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";

你有那个警告的电话号码吗?如果是这样的话,它是这些行中的一行吗?数组在C中是不可赋值的。您需要一个字符一个字符地复制它。幸运的是,有一个名为
strcpy
的函数可以为您执行此操作。@Martin不客气。:-)