2016-12-05 58 views
1

我得到了錯誤的結構或聯合:對成員要求的東西不是一個結構或聯合在此代碼錯誤:請求成員的東西不是在這個代碼

int main() { 
    char Oberon; 

    struct Oberon { 
    short borsa_oro; 
    short punti_ferita; 
    short incantesimi; 
    short pozione_guaritrice; 
    short veleno; 
    char armatura; 
    char arma; 
    }; 

    Oberon.borsa_oro=10; 
    Oberon.punti_ferita=5; 
    Oberon.incantesimi=2; 
    Oberon.pozione_guaritrice=5; 
    strcpy (Oberon.armatura, "Vesti del mago"); 
    strcpy (Oberon.arma, "Spada di Oberon"); 

    return 0; 
} 

我應該怎麼辦?

+1

1)'字符奧伯倫;'改變'結構奧伯倫奧伯倫;',並移動到後'結構奧伯倫{...}' – BLUEPIXY

+0

2) char armatura; char arma;' - >'char armatura [32]; char arma [32];' – BLUEPIXY

+1

「*我該怎麼辦?*」仔細看一下編譯器的警告/錯誤消息指出的代碼行? – alk

回答

0

這不是應該如何使用結構。你也有一個同名的字符char Oberon;刪除或重命名它。

結構只是描述一個數據類型,你仍然必須初始化他們,就像任何其他; 例如:

struct person { 
    int age; 
    ... 
}; 

struct person p; 
p.age = 10; 

爲了簡化,使用的typedef

typedef struct person { 
    int age; 
    ... 
} person; 
person p; 
p.age = 10; 
3

我想你的意思是創造這樣一個player結構,然後創建奧伯倫,誰是一個結構的球員。

您還忘記將一塊內存與armaturaarma關聯。

您還嘗試在定義結構之前創建播放器實例。

所以我覺得你的意思是這樣的:

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 

    struct player { 
     short borsa_oro; 
     short punti_ferita; 
     short incantesimi; 
     short pozione_guaritrice; 
     short veleno; 
     char armatura[50]; 
     char arma[50]; 
    }; 

    struct player Oberon; 

    Oberon.borsa_oro = 10; 
    Oberon.punti_ferita = 5; 
    Oberon.incantesimi = 2; 
    Oberon.pozione_guaritrice = 5; 
    strcpy (Oberon.armatura, "Vesti del mago"); 
    strcpy (Oberon.arma, "Spada di Oberon"); 

    printf("Oberon ha %d oro e utilizza la armatura %s\n", Oberon.borsa_oro, Oberon.armatura); 

    return 0; 
} 
+0

非常感謝你解決了我的問題 – Derio

相關問題