如何初始化struct char数组?

时间:2018-04-16 00:44:00

标签: c

我在初始化属于结构的字符串时遇到问题。 “表达式必须具有可修改的左值”。我需要使用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");

1 个答案:

答案 0 :(得分:2)

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");
相关问题