C 错误:在此代码中请求非结构或联合中的成员

C 错误:在此代码中请求非结构或联合中的成员,c,struct,C,Struct,我得到了一个错误:在这个代码中请求某个不是结构或联合的成员 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_o

我得到了一个错误:在这个代码中请求某个不是结构或联合的成员

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;
}

我应该怎么做?

结构不是这样使用的。您还有一个同名的char
char-Oberon删除或重命名它

结构只是描述一种数据类型,你仍然需要初始化它们,就像其他任何结构一样; 例如:

要简化这一点,请使用typedef

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

我想你的意思是创建一个类似于
player
struct的东西,然后创建Oberon,他是一个struct播放器

您还忘记将内存块与
armatura
arma
关联

您还尝试在定义结构之前创建player的实例

所以我想你的意思是:

#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;
}
#包括
#包括
内部主(空)
{
结构播放器{
短博尔萨奥罗;
短蓬蒂乌费里塔;
短白炽灯;
短pozione_guaritrice;
短veleno;
char armatura[50];
char-arma[50];
};
结构球员奥伯伦;
Oberon.borsa_oro=10;
Oberon.punti_ferita=5;
Oberon.incantesimi=2;
Oberon.pozione_guaritrice=5;
strcpy(Oberon.armatura,“马戈博物馆”);
strcpy(Oberon.arma,“Spada di Oberon”);
printf(“Oberon ha%d oro e utilizza la armatura%s\n”,Oberon.borsa_oro,Oberon.armatura);
返回0;
}
1)
char-Oberon更改为
struct Oberon Oberon并移动到
struct Oberon{…}
2)
char armatura之后;查尔·阿玛-->
char armatura[32];char-arma[32]“我应该怎么做?”仔细查看编译器的警告/错误消息指向的代码行?
#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;
}