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