c语言之初识结构体|时刻需

阅读次数: 27

  • A+
所属分类:C语言 语言学习

c语言的结构体类似于数组,是很重要且实用的一种数据表达方法

不多说了直接上例子:(来源 网易课堂 老九君指导)

Hero.h

#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>

//结构体:英雄、职业、英雄能力、时间
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 <stdio.h>
#include <stdlib.h>
#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); 不然会报错的呢

这里只是简单的声明结构体,笔记会一直更新中

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: