c语言的结构体类似于数组,是很重要且实用的一种数据表达方法
不多说了直接上例子:(来源 网易课堂 老九君指导)
Hero.h
#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED
#include
#include
//结构体:英雄、职业、英雄能力、时间
typedef struct _job //宏定义一个变量
{
int id;
char * name; //职业名称
char * desc; //职业描述
}Job;
typedef struct _Abillity
{
int id;
char * name;//特殊能力名称
char * intro; //特殊能力说明
}Abillity;
typedef struct _putTime
{
int year;
int month;
int day;
}PubTime;
typedef struct _hero
{
int id;
char * name;//英雄名称
//int sex; //性别
char sex;
Job job;//职业
double hp;//生命值
double speed; //攻击速度
Abillity abillity;//特殊能力
PubTime pubTime;//上线时间
}Hero;
//用来输入英雄的值
void InputHero();
//用来输出英雄
void ShowHero();
#endif // HERO_H_INCLUDED
Hero.h
#include "Hero.h"
Hero heros[5];
Job jobs[] = {
{1,"法师","火球术"},
{2,"刺客","暗影杰"},
{3,"战士","奥拉夫"},
{4,"枪炮师","大枪"},
{5,"术士","巫术"},
};
void InputHero(){
//动态录入
/*int id;
char * name;//英雄名称
char sex; //性别
Job job;//职业
double hp;//生命值
double speed; //攻击速度
Abillity abillity;//特殊能力
PubTime pubTime;//上线时间*/
int jobChoice;
int i;
for(i = 0;i < 1; i++){
printf("请输入第%d位英雄的信息:\n",i+1);
heros[i].id = i+1;
printf("名称:");
heros[i].name = (char*)malloc(50);
scanf("%s",heros[i].name);
fflush(stdin);//录入字符后清空缓冲区
printf("性别:");
// scanf("%d",&heros[i].sex);
scanf("%c",&heros[i].sex);
fflush(stdin);//录入字符后清空缓冲区
// 设定职业数组 让用户选择
int j;
for(j=0;j<5;j++){
printf("%s\n",jobs[j].name);
}
printf("请选择职业:(1-5之间的整数)");
scanf("%d",&jobChoice);
heros[i].job = jobs[jobChoice -1];
printf("%s当前的职业:《%s》\n",heros[i].name,heros[i].job.name);
}
}
void ShowHero(){
}
main.c
#include
#include
#include "Hero.h"
int main()
{
/*char sex;
scanf("%c",&sex);
printf("%c",sex);*/
InputHero();
return 0;
}
重要说明
(char*)malloc(50) 随机定义内存大小
scanf("%s",heros[i].name);后要跟 fflush(stdin); 不然会报错的呢
这里只是简单的声明结构体,笔记会一直更新中