[英]How to initialize struct char array?
我在初始化屬於結構的字符串時遇到麻煩。 “表達式必須具有可修改的左值”。 我需要使用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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.