c博客06结构体&文件

1.本章学习总结

1.1 学习内容总结

结构体如何定义、成员如何赋值

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

例如:

struct student{
  int num;
  char name[100];
  int computer,english,math;
  double average;
}s1,s2;

结构体的嵌套定义:先定义成员的结构类型,在定义主结构类型

引用结构变量成员的格式结构变量名.结构成员名
结构变量的整体赋值:如果两个结构变量具有相同的格式,则允许将一个结构变量的值直接赋给另一个结构变量。
例如 s1=s2
等价于下列语句

s2.num=s1.num;
strcpy(s2.name,s1.name);
s2.math=s1.math;

只有相同结构类型的变量之间才可以直接赋值

结构体数组排序做法(以课本p225为例)

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;
}

结构体指针怎么用:
用指针引用结构体变量成员的方式是:
(*指针变量名).成员名
p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“”,所以如果 *p 两边的括号省略的话,那么 *p.num 就等价于 (p.num) 了。
从该程序也可以看出:因为指针变量 p 指向的是结构体变量第一个成员的地址,所以 p 和第一个成员(
p).name 是等价的。
此外为了使用的方便和直观,用指针引用结构体变量成员的方式:
(*指针变量名).成员名可以直接用:指针变量名->成员名来代替,它们是等价的。“->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。p->num 的含义是:指针变量 p 所指向的结构体变量中的 num 成员。p->num 最终代表的就是 num 这个成员中的内容。

共用体、枚举类型做法

union 共用体名
{
	共用体成员
}变量表列;

共用体名.共用体成员

共用体变量所占内存长度等于最长的成员的长度
同一内存段可以存放不同类型的成员,但在每一瞬间只能存放其中一种
共用体变量起作用的成员是最后一次存放的成员
共用体变量的地址和它各个成员的地址是同一个地址

enum weekday{sun,mon,tue,wed,thu,fri,sat};//声明枚举类型weekday
enum weekday d1,d2;  //定义枚举变量,d1,d2的值仅限于枚举类型weekday列举的值的范围
//也可以将上述代码写为:
enum weekday{sun,mon,tue,wed,thu,fri,sat} d1,d2;

在C编译中,对枚举元素按常量处理,不能对枚举元素赋值,如:sun=0,mon=1是错误的
C编译按枚举元素定义时的顺序,使它们的值为0,1,2,3,4,5,6
C编译按枚举元素定义时的顺序,第一个元素默认为0,后续逐个加1。可以改变任何一个枚举元素(如wed)的值,改变后,wed后续的值逐个加1,wed前面的值不变。

enum weekday{sun,mon,tue,wed=10,thu,fri,sat} d1,d2;
	printf("%d %d %d %d %d %d %d",sun,mon,tue,wed,thu,fri,sat);

结果:0 1 2 10 11 12 13
给枚举变量赋值,只能使用声明枚举类型时列举的元素,例如,给d1赋值时只能使用从sun到sat七个值。
(参考https://blog.csdn.net/qq_37611077/article/details/103372283)
文件读写,文件中数据如何读进结构体数组

    if ((fp= fopen("name", "r+")) == NULL)
    {
        exit(0)
    }

1.2 本章学习体会

学习感受:这章的知识点比较多,经常记不住某个表达式的用法,应该要多多复习才不会导致遗忘
代码量400+

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

2.1文件介绍

头文件idiom.h

头文件中有两个结构体,以及四个函数,功能分别是输出成语数据,进行用户登录,主菜单函数以及查找成语函数

文件1main.c

这是主函数所在的文件,功能就是打开文件,并输出提示

文件2Function.c

封装了如图所示的四个函数




2.2运行结果

登录界面

菜单界面

输出成语

查找成语

输入0退出系统

2.3
小结:大作业比pta更具有挑战性,还可以综合地运用所学知识,古德古德

原文地址:https://www.cnblogs.com/eeee9876/p/12045182.html