gpt4 book ai didi

c - 如何初始化struct char数组?

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

我在初始化属于结构的字符串时遇到问题。 “表达式必须有一个可修改的左值”。我需要使用 strcopy 吗?我不太确定如何利用它。这是我的代码:

    typedef struct {
char name[50];
int attackDamage;
int magicDamage;
int defense;
int power;
int type;
} ITEM;

int main() {
ITEM item[10];
char itemset[5][5] = { 0 };
char champion1[] = "Gnar";
char champion2[] = "Vi";
char champion3[] = "Fizz";
char champion4[] = "Draven";
char champion5[] = "Braum";
item[0].name = "Brutalizer"; // Having issues here
}

编辑:我这样做了,似乎不再有错误了。这是正确的方法吗?

strcpy(item[0].name, "Brutalizer");

最佳答案

item[0].name 是一个数组,您不能将指针(字符串文字)分配给大批。您需要复制内容,在本例中使用 strcpy 例如:

strcpy(item[0].name, "Brutalizer");

或者如果事先不知道源的长度,那么你可以使用strncpy 避免缓冲区溢出:

strncpy(item[0].name, "Brutalizer", sizeof item[0].name);
item[0].name[sizeof(item[0].name) - 1] = '\0'; // make sure that it's \0-terminated

或者你可以使用snprintf

snprintf(item[0].name, sizeof item[0].name, "Brutalizer");

关于c - 如何初始化struct char数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848205/

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