c博客06-2019-结构体&文件
Posted wangtianxue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c博客06-2019-结构体&文件相关的知识,希望对你有一定的参考价值。
1.本章学习总结(2分)
1.1 学习内容总结
- 结构体的定义与赋值
- 单独定义
struct 结构名 { 类型名 结构成员名1; 类型名 结构成员名2; ... 类型名 结构成员名n; }; struct 结构名 变量名;
- 混合定义
struct 结构名 { 类型名 结构成员名1; 类型名 结构成员名2; ... 类型名 结构成员名n; }结构变量名表;
- 无类型名定义
struct { 类型名 结构成员名1; 类型名 结构成员名2; ... 类型名 结构成员名n; }结构变量名表;
- 用typedef语句定义
typedef struct { 类型名 结构成员名1; 类型名 结构成员名2; ... 类型名 结构成员名n; }结构变量名;
- 结构成员的赋值:可以直接赋值,如struct student s1={101,“zhang”,78,87,85};也可以用“.”来赋值,如s1.num=101;还可以结构变量的整体赋值,前提是两个结构变量具有相同的类型,如s2=s1。
- 结构体数组排序做法
- 选择排序法
for(i=0;i<n-1;i++) { index=i;//记录下标 for(j=i+1;j<n;j++) 当下标为j大于下标为index时 index=j; end for 交换下标为index和下标为i的元素 } end for
- 冒泡排序法
for(i=1;i<n;i++) { for(j=0;j<n-i;j++) { 如果下标为j的元素比下一个元素大 则交换这两个元素 } end for } end for
- 结构体指针的用法
- 结构指针的定义一般为struct 结构名* 变量名;结构指针的值实际上是结构变量的首地址,即第一个成员的地址。如果变量名为p,则可以用p来访问结构成员,如(p).num=101;也可以用->指向运算符来访问指针指向的结构成员,如p->num=101。结构指针作为函数参数,如int update(struct student*p);pos=update(students);形参介绍结构指针,对应的实参是结构数组名students。结构指针作为函数参数只要传递一个地址值,因此能够极大地提高参数传递的效率。
- 共用体、枚举类型做法
- 联合的一般声明为
联合中的成员共享同一块内存空间,C语言编译程序保证分配给联合的内存能够容纳其最大的成员变量,以最后一次赋值为值。union 联合名 { 成员声明; 成员声明; ... }变量列表;
- 枚举变量定义和初始化
enum 枚举名{枚举值1,枚举值2,...} 变量列表;每个枚举值都是一个合法的标识符,或者是一个标识符后面跟一个等号,再加上一个常量表达式。编译程序从0开始逐个给枚举值赋值,如果当其中一个枚举值以及确定有值了,则从该枚举值的值往后依次加1。某个枚举变量的值只能是定义时列出的枚举值之一。
- 文件读写,文件数据读取
- 打开文件用函数fopen(),调用形式为fopen(“文件名”,“文件打开方式”);文件的打开方式有“r”:打开文本文件进行只读,“w”:建立新文本文件进行只写,“a”:打开文本文件进行追加,“r+”:打开文本文件进行读写,“w+”:建立新文本文件进行读写,“a+”:打开文本文件进行追加读写,这是文本文件的打开方式,而二进制文件的打开方式在后面加一个b即可。关闭文件用函数fclose(),一般格式为fclose(文件指针);
- 文件读写分为字符方式文件读写函数:fgetc()和fputc();字符串方式文件读写函数:fputs()和fgets();格式化方式文件读写函数:fscanf()和fprintf();数据块方式文件读写函数:fread()和fwrite()。
- 还有其他相关函数,如重定位文件首函数rewind();指针移动控制函数fseek();获取指针当前位置函数ftell();文件末尾检测函数feof();读写错误检查函数ferror();出错标记清除函数clearerr()。
1.2 本章学习体会
- 通过对文件和结构的学习,发现指针终于派上用场了,指针以及数组起到了很大的作用,同时难度也大大提高了,不是很好懂,多文件写程序的时候,脑子有点混乱,基本上把前面所学的知识全都用上了,综合量比较大,必须知识点要掌握的够,掌握的多,并且还要掌握的牢固。我发现现在随着对C语言的逐渐深入的学习,写程序出错时,特别不好调试,因为函数传参量太多,也不知道错在了哪,基本上断点调试找错基本不可能了,总之学过这两章后,感觉知识量巨大,不是很好消化,甚至消化不了,那只能慢慢的看,慢慢的理解,慢慢的消化了。
- 这两周的代码量大概为664行。
2.综合作业--“我爱成语”(8分)
以上是关于c博客06-2019-结构体&文件的主要内容,如果未能解决你的问题,请参考以下文章