簡體   English   中英

如何初始化struct char數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM