gpt4 book ai didi

字符数组错误,需要一个表达式,错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:52 24 4
gpt4 key购买 nike

我有下面的代码,我想把char数组初始化为NULL。

出现以下错误

错误:期待一个表达g_device->name1[NAME_LENGTH-1] = {'\0'};

typedef struct device_ {

uint32_t id;
char name1[NAME_LENGTH];
char name2[NAME_LENGTH];

} device_t;

device_t *g_device = NULL;


void init_device(void)
{

g_device = malloc(sizeof(device_t));
g_device->id = 0;
g_device->name1[NAME_LENGTH-1] = {'\0'};
g_device->name2[NAME_LENGTH-1] = {'\0'};
}

最佳答案

您不能在 C 中分配数组,而且类型无论如何都不匹配,g_device->name1[NAME_LENGTH-1] 是一个 char{ '\0'}char[1]

使用strcpy:

strcpy( g_device->name1 , "" );

或者手动终止数组:

g_device->name1[0] = '\0';

请注意,您应该将第一个字符设置为 0,而不是最后一个。

上面两个例子当然会留下其他元素未初始化,所以如果你想将它们初始化为0,使用memset或循环:

memset( g_device->name , '\0' , NAME_LENGTH * sizeof( char ) );

或:

for( size_t index = 0 ; index < NAME_LENGTH * sizeof( *g_device->name ) ; index++ )
{
g_device->name[index] = '\0';
}

关于字符数组错误,需要一个表达式,错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38092539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com