gpt4 book ai didi

具有保留大小的 c 二维数组静态初始化

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:14 25 4
gpt4 key购买 nike

类似于一维数组声明:

char arr[]={[0 ... RESERVED_CHARS-1]=' ',[RESERVED_CHARS]='\0'};

请告知如何/如果可能的话声明这样的二维数组?

#define SAY_MAX_MSG_LEN 6
#define REP_MAX_MSG_LEN 8

char *var_msg_out[][3]={\
{" Say ",[][0 ... SAY_MAX_MSG_LEN+1]=' ','\0'},\
{" Reply ",[][0 ... REP_MAX_MGS_LEN+1]=' ','\0'}\
};
snprintf(var_msg_out[0][1],SAY_MAX_MSG_LEN,"hello");
printf("%s",var_msg_out[0]);

谢谢!

最佳答案

你所拥有的唯一部分是:

char *var_msg_out[][3]={
{" Say ",[][0 ... SAY_MAX_MSG_LEN+1]=' ','\0'},
^ ???

这里有一个基本问题:“Say”之后的元素是一个 char*,但您正试图将其分配给它,就好像它是一个 char 数组一样。两者不是一回事:您的 char* 可以毫无问题地指向一个文字字符串(如“Say”),但是您不能初始化它的字符,因为没有什么可以初始化的——只有一个指针!

你可以这样修复它:

struct foo {
const char* x;
char y[100];
const char* z;
};

struct foo var_msg_out[]={
{" Say ", {[0 ... SAY_MAX_MSG_LEN+1]=' '}, ""},
{" Reply ", {[0 ... REP_MAX_MSG_LEN+1]=' '}, ""}
};

关于具有保留大小的 c 二维数组静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699947/

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