簡體   English   中英

當我嘗試將結構中的char *類型的元素設置為特定字符串時,C程序崩潰?

[英]C program crashes when I tried to set an element of type char* in my struct to a specific string?

我的C程序有一個奇怪的問題。 我試圖跟蹤在我的小游戲中創建的武器的名稱和獎勵,但是,初始化了幾把武器后程序崩潰了。

這是我的武器結構:

typedef struct weaponTag {
    char *name;
    int bonus;
} weaponNode;

在這里,我為制造6種不同的武器分配了足夠的內存:

weaponNode *wep = malloc(sizeof(weaponNode) * 6);
initializeWeapons(&wep);

使用之前創建的wep的地址調用initializeWeapons

void initializeWeapons(weaponNode **wep)
{
    printf("Initializing weapons...\n");
    setWeapon(wep[0], "Iron sword", 2);
    setWeapon(wep[1], "Steel sword", 4);
    setWeapon(wep[2], "Mithril sword", 7);
    setWeapon(wep[3], "Adamantine sword", 11);
    setWeapon(wep[4], "Dark Magic sword", 16);
    setWeapon(wep[5], "Diamond sword", 23);
}

然后,我為要創建的每種武器調用setWeapon

void setWeapon(weaponNode *wep, char *name, int bonus)
{
    wep->name = name;
    wep->bonus = bonus;
}

當我運行它時,它適用於鋼鐵劍,但是一旦到達秘銀劍,它就會卡在wep->name = name

有人有什么想法嗎?

當您將指向指向weaponNode的指針的指針weaponNodeinitializeWeapons函數時, 幾乎就像傳遞了一個指針數組,這不是您所擁有的。

更改initializeWeapons函數,使其僅使用一個指向weaponNode結構的指針,然后將其傳遞給例如setWeapon時,可以使用諸如setWeapon(wep + 1, ...)類的指針算法setWeapon(wep + 1, ...)也可以使用類似於setWeapon(&wep[1], ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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