分文件编译--头文件
#ifndef __FUN_H_
#define __FUN_H_
#define MAX 40
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef union{ //定义共用体
int score;
char course[20];
}Occ;
typedef struct{ //定义人员结构体
char name[20];
char sex[4];
char occ[20];
Occ x ;
}Member;
typedef struct{ //班级结构体
Member arr[MAX];
int class_num;
}Class;
Member *request(int class_num); //申请空间函数
void mem_input(Member *m,int class_num); //输入信息函数
void display_mem(Member *m,int class_num); //显示信息函数
void find_mem(Member *m,int class_num,char name[20]); //寻找人员函数
void free_class(Member *m); //释放空间函数
#endif
分文件编译--源文件
#include"fun.h"
/***********定义申请内存空间函数*************/
Member *request(int class_num){
Member *m = (Member*)malloc(sizeof(Member)*class_num);
if(NULL == m){
printf("空间申请失败\n");
return NULL;
}else{
printf("空间申请成功\n");
return m;
}
}
/***********定义输入成员信息函数*************/
void mem_input(Member *m,int class_num){
if(NULL == m){
printf("未能开辟空间\n");
return;
}
for(int i=0;i<class_num;i++){
printf("请输入第%d位成员的姓名:\n",i+1);
scanf("%s",(m+i)->name);
printf("请输入第%d位成员的性别:\n",i+1);
scanf("%s",(m+i)->sex);
printf("请输入第%d位成员的职业:\n",i+1);
scanf("%s",(m+i)->occ);
if(strcmp((m+i)->occ,"老师")){
printf("请输入第%d位学生的成绩:\n",i+1);
scanf("%d",&(m+i)->x.score);
}else{
printf("请输入第%d位老师的课程:\n",i+1);
scanf("%s",(m+i)->x.course);
}
}
}
/***********定义展示成员信息函数*************/
void display_mem(Member *m,int class_num){
printf("姓名\t性别\t职业\t分数\t课程\n");
for(int i=0;i<class_num;i++){
if(strcmp((m+i)->occ,"学生") == 0){
printf("%s\t%s\t%s\t%d\t\n",(m+i)->name,(m+i)->sex,(m+i)->occ,(m+i)->x.score);
}else{
printf("%s\t%s\t%s\t\t%s\n",(m+i)->name,(m+i)->sex,(m+i)->occ,(m+i)->x.course);
}
}
}
/***********定义查找成员信息函数*************/
void find_mem(Member *m,int class_num,char name[20]){
int flag=0;
for(int i=0;i<class_num;i++){
if(strcmp((m+i)->name,name) == 0){
flag = 1;
}
}
if(flag == 1){
printf("有%s这个成员\n",name);
}else{
printf("无%s这个成员\n",name);
}
}
/***********定义释放空间函数*************/
void free_class(Member *m){
if(NULL != m){
free(m);
m = NULL;
printf("已释放空间\n");
}
}
分文件编译--测试文件
#include"fun.h"
#define class_num 3
int main(int argc, const char *argv[])
{
Member *m = request(class_num); //malloc申请
mem_input(m,class_num); //输入信息
display_mem(m,class_num); //显示信息
find_mem(m,class_num,"mcsl"); //寻找用户
free_class(m); //释放空间
return 0;
}
运行结果
思维导图