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。结构指针作为函数参数只要传递一个地址值,因此能够极大地提高参数传递的效率。
  • 共用体、枚举类型做法
    • 联合的一般声明为
    union 联合名
    {
    成员声明;
    成员声明;
    ...
    }变量列表;
    联合中的成员共享同一块内存空间,C语言编译程序保证分配给联合的内存能够容纳其最大的成员变量,以最后一次赋值为值。
    • 枚举变量定义和初始化
      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-结构体&文件的主要内容,如果未能解决你的问题,请参考以下文章

c博客06-2019-结构体&文件

c博客06-2019-结构体&文件

c博客06-2019-结构体&文件

c博客06-2019-结构体&文件

c博客06-2019-结构体&文件

c博客06-2019-结构体&文件