C博客06-结构体&文件

1.本章学习总结

1.1 学习内容总结

  • 结构体如何定义、成员如何赋值
    结构体定义的一般形式:
    (1)混合定义:
struct 结构名
{
    结构名 结构成员名1;
    结构名 结构成员名2;
    结构名 结构成员名3;
    ......
    结构名 结构成员名n;
};


另一种定义方法


typedef struct
{
     结构名 结构成员名1;
     结构名 结构成员名2;
     结构名 结构成员名3;
     ......
     结构名 结构成员名n; 
}

(2)单独定义:


struct 结构名 结构成员名1,结构成员名2;


(3)结构体的赋值

  • 成员如何赋值
    第一种
struct Student st1 = {100, 'm', "Xiexiaodong"}; //第一种,定义的同时初始化,类似数组,定义后在整体赋值会出错

第二种

struct Student st2;  //单独赋值
st2.score = 100;
st2.sex = 'm';

补充:对字符数组赋值可以用strcpy函数实现

  • 结构体数组排序做法
struct student{  //定义一个结构体
  int num;
  char name[10];
  int computer,english,math;
  double average;
};
struct student students[50],temp; /*定义结构数组*/
for(i=0;i<n-1;i++)
{
  index=i;
  for(j=i+1;j<n;j++)
     {
       if(students[j].average>students[index].average) /*比较平均成绩*/
         index=j;
     }
  temp=students[index];  //交换数组元素
  students[index]=students[i];
  students[i]=temp;
}

  • 结构体指针怎么用
    结构指针就是指向结构类型变量的指针
struct student s1={101,"zhang",78,87,85},*p;
p=&s1;

(1)用p访问结构成员
(
p).num=101;
(2)用指向运算符->访问指针指向的结构成员
p->num=101;

  • 结构指针作为函数参数
int update_score(struct student*p,int n,int num,int course,int score);
pos=update_score(students,n,num,course,score);

使用结构指针作为函数参数只要传递一个地址值,能够极大地提高参数传递的效率

  • 共用体
union 共用体类型名
{
    成员列表
};


  • 枚举类型做法
enum weeks{ SUN,MON,TUE,WED,THU,FRI,SAT};  //枚举常量的值  默认 0,1 ,2......

  • 文件读写,文件中数据如何读进结构体数组
while(!feof(fp)) {  //从文件中读取数据到结构体
    fscanf(fp,"%s%d%d%s%d%d",stu[i].name,&stu[i].num,&stu[i].sex,stu[i].class,
    &stu[i].score[0],&stu[i].score[1]);
    i++;
}
information.txt格式: 数据间用空格隔开


1.2 本章学习体会

刚开始接触多文件还不大习惯,要多多熟悉,特别是结构指针和各个文件操作函数都要多熟悉。

2.综合作业--“我爱成语”

2.1文件介绍

2.1.1头文件介绍

2.1.2主函数介绍

2.1.3登入函数

1.登入函数:

2.1.4功能实现函数:

1.菜单函数:

2.选择函数

3.获取成语数据函数:

4.打印成语函数:

5.查找成语函数:

运行结果

posted @ 2019-12-15 23:08  一个敢敢  阅读(251)  评论(0编辑  收藏  举报