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

1.本章学习总结(2分)

1.1 学习内容总结:

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

  • 结构体的一般形式:
    struct 结构体名
    {
    数据类型 成员名1;
    数据类型 成员名2;
    ....
    };

  • 在结构体定义的时候,分为两种:
    1.先定义结构体类型再定义变量名:
    struct 结构体名
    {
    数据类型 成员名1;
    数据类型 成员名2;
    ....
    };
    struct 结构体名 变量名;
    eg:

    2.在定义结构体类型的同时定义变量:
    struct 结构体名
    {
    数据类型 成员名1;
    数据类型 成员名2;
    ....
    }变量名;
    eg:

  • 结构体成员的赋值:
    结构体成员的赋值可以直接赋值也可以让用户输入,直接赋值时变量则为变量名.成员名=要赋值的内容,如果是数组则需要用strcpy函数。
    用户输入则需要注意如果是单一变量则需加&,如果是数组则不需要加&,变量名还是变量名.成员名格式。

1.1.2 结构体数组排序做法:

  • 结构体数组排序与一般排序没有区别,但注意的时交换变量时要整体交换,这就可以想到两种,第一种则是傻傻地将结构体每一个变量都交换,第二种则是将要交换的两个结构体的地址交换。

1.1.3 结构体指针怎么用:

  • 结构体指针的定义:结构体类型 *p;
  • 如果一个结构体指针被赋值了结构体变量的首地址,那么这个指针变量就可以指向任意一个成员,即p->成员名=变量名.成员名

1.1.4 共用体、枚举类型做法:

  • 共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。
  • 共用体成员可以表示多种属性。
  • 枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中。
  • 枚举元素是常量,只能在定义阶段赋值。

1.1.5 文件读写,文件中数据如何读进结构体数组:

  • 首先定义文件指针并用fopen函数打开文件,注意如果文件为空则需要特别处理,否则对后续操作会有很大影响。
  • 其次将文件数据写入结构体数组可以用到fscanf函数或fgets函数。
  • fgets:从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往缓冲区写多一个,所以它是读一行数据)
  • fscanf:从文件中读取一段数据存入缓冲区(fscanf遇到空格或回车就结束,它会把空格或回车转换为,所以它是读一小段数据)

2.综合作业--“我爱成语”(8分)

2.1 文件介绍

2.1.1 头文件介绍

  • idiom.h
    在这个头文件下,我定义了一个结构体类型和两个函数:一个查找成语,一个将成语写入结构体变量。
    按我原先的设想拿来定义多个成语操作的函数:成语的写入,成语的出题,核对题目等,奈何实力所限,就近乎空白了。

  • user.h
    在这个头文件下,我定义了一个结构体类型和两个函数:一个菜单,一个关于用户的操作。
    按我原先的设想拿来定义多个用户操作的函数:输入用户名的核对,密码的核对,用户的创建,用户成绩的统计,用户的排名。

2.1.2函数实现文件介绍

  • main.cpp
    这个文件下定义了主要的变量和进行主要的程序流程:文件的开闭,菜单等。
  • 函数实现.cpp
    这个文件下存放着之前定义的函数的内容。

2.2 运行结果

2.3大作业总结

深刻认识到自己知识储量与同学的差距,以及代码量的差距,还有一直搞不懂那个文件打开错误到底怎么解决。

原文地址:https://www.cnblogs.com/ye736660997/p/12043663.html