结构体初学问题
#include <stdio.h>#include <stdlib.h>
#include <string.h>
struct Martial
{
int id; //门派id
char name;//门派名称
char count;//门派人数
char type; //门派类别 1正派 2中立 3邪派
}martial = {1,"德玛西亚",100,1};
struct player
{
int id;//玩家的id
char name;//玩家的名称
char pass;//玩家的密码
char sex;//玩家性别
struct Martial martial;//玩家所属门派
};
int main()
{
struct player player = {1,"小彪",1236,'f'};
printf("%s\n",player.martial.name);
return 0;
}
最后提取不出来门派的名称 本帖最后由 yuxijian2020 于 2021-4-14 11:28 编辑
因为你没有给player结构体中的门派赋值
最好是重新弄个方法用于给player对象赋值
void InitPlayer(struct player* p, int id, char* name, char* pass, char sex, int mId, char* mName, char count, char type)
{
p->id = id;
strcpy_s(p->name, sizeof(p->name) / sizeof(char), name);
strcpy_s(p->pass, sizeof(p->pass) / sizeof(char), pass);
p->sex = sex;
p->martial.id = mId;
strcpy_s(p->martial.name, sizeof(p->martial.name) / sizeof(char), mName);
p->martial.count = count;
p->martial.type = type;
} yuxijian2020 发表于 2021-4-14 11:22
因为你没有给player结构体中的门派赋值
最好是重新弄个方法用于给player对象赋值
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Martial
{
int id; //门派id
char name;//门派名称
char count;//门派人数
char type; //门派类别 1正派 2中立 3邪派
};
struct player
{
int id;//玩家的id
char name;//玩家的名称
char pass;//玩家的密码
char sex;//玩家性别
struct Martial martial;//玩家所属门派
};
int main()
{
struct player player = {1,"小彪",1236,'f',{1,"德玛西亚",100,1}};
printf("%s\n",player.martial.name);
return 0;
}
可就算我给他赋值也是提取不出来 yuxijian2020 发表于 2021-4-14 11:22
因为你没有给player结构体中的门派赋值
最好是重新弄个方法用于给player对象赋值
编译器也没报错 天敌521 发表于 2021-4-14 11:53
编译器也没报错
c/c++编译器不报错的多了,结构体中的结构体不能像你这样直接赋值,它找不到的... 天敌521 发表于 2021-4-14 11:53
编译器也没报错
忘记说了,你这种写法在我vs2019上是报错的 yuxijian2020 发表于 2021-4-14 11:59
忘记说了,你这种写法在我vs2019上是报错的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Martial
{
int id; //门派id
char name;//门派名称
char count;//门派人数
char type; //门派类别 1正派 2中立 3邪派
};
struct player
{
int id;//玩家的id
char name;//玩家的名称
char pass;//玩家的密码
char sex;//玩家性别
struct Martial martial;//玩家所属门派
};
int main()
{
struct player player = {1,"小彪","1236",'f',{1,"德玛西亚",100,1}};
printf("%s\n",player.martial.name);
return 0;
}
yuxijian2020 发表于 2021-4-14 11:59
忘记说了,你这种写法在我vs2019上是报错的
好的谢谢解答 天敌521 发表于 2021-4-14 12:02
好的谢谢解答
我换一种写法指针还不是太熟练 人造人 发表于 2021-4-14 12:01
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Martial
{
int id; //门派id
char name;//门派名称
char count;//门派人数
char type; //门派类别 1正派 2中立 3邪派
};
struct player
{
int id;//玩家的id
char name;//玩家的名称
char pass;//玩家的密码
char sex;//玩家性别
struct Martial martial;//玩家所属门派
};
int main()
{
struct player player = {1,"小彪","123456",'f'};
player.martial.id = 1;
strcpy(player.martial.name,"天山");
strcpy(player.martial.count,"300");
player.martial.type = 3;
printf("%s\n",player.martial.name);
return 0;
}
换了种赋值方式总算出来了
你的解答我学到后面会再看一看 天敌521 发表于 2021-4-14 12:46
#include
#include
#include
你看一下7楼的回答,你是赋值的时候pass是字符串但是你赋值成int了,所以才报错{:10_247:} 人造人 发表于 2021-4-14 12:01
我眼瞎了我就说咋能报错呢,他属性赋值就不对{:10_247:} 人造人 发表于 2021-4-14 12:01
感谢感谢 粗心了 yuxijian2020 发表于 2021-4-14 13:05
你看一下7楼的回答,你是赋值的时候pass是字符串但是你赋值成int了,所以才报错
感谢感谢
页:
[1]