c博客06-结构体&文件

1.本章学习总结

1.1 学习内容总结

  • 结构体定义和赋值
定义结构体:struct 结构名
{
    类型名 结构成员名1;
    类型名 结构成员名2;
    .....
};
结构体赋值:定义结构变量,struct 结构名 变量名如s;
s.结构成员名=所要赋的值,如s.number=1;
  • 结构体数组排序做法
选择排序法:
for(i=0;i<n-1;i++)
{
      index=i;
      for(j=i+1;j<n;j++)
         {
             比较大小后index=j;
         }
      交换数组元素
}
冒泡排序法:
for(i=0;i<n-1;i++)
{
     for(j=0;j<n-i-1;j++)
      {
         比较大小
      }
      交换数组元素
}
  • 结构体指针用法
定义结构体指针:struct 结构名 *p;
让p指向结构体,如p=&student;
(*p).number或p->number便可用结构体指针间接访问结构体里的成员
  • 共用体的使用:
定义:union 共用体类型名
{
    成员列表
};
union 共用体类型名 变量名;
共用体占用的内存等于最长的成员占用的内存。
共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。

枚举类型使用:

enum 枚举名{枚举值1,枚举值2,...}变量列表;
枚举变量的值只能是定义时列出的枚举值之一,如:
enum a{1,2,3}b,c;则b、c只能是1,2,3中的其中一个
- struct与结构名共同组成结构类型名
- 定义嵌套结构类型时,必须先定义成员结构类型,再定义主结构类型
- 只有相同的结构类型变量才可以直接赋值
- 定义文件指针:FILE *fp,FILE是文件类型定义符,fp是文件类型的指针变量
- 利用文件指针编程时不能像普通指针那样写fp++或*fp
- exit(0)可以关闭所有打开的文件,并终止程序
- 打开文件:fopen("文件名","文件打开方式");
  关闭文件:fclose(文件指针);

1.2 本章学习体会

  • 结构体使用后使得程序更直观,感觉比较好用,也容易理解
  • 学完结构体的相关内容后,明白了个人信息是怎样储存的,跟生活更有联系了
  • 文件的使用可以极大的简化程序,让程序不会因代码量多而显得很乱
  • 两周代码量800行左右,达到要求

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

    2.1.文件介绍

    1.头文件介绍

    头文件1user.h

    结构体或函数 功能
    结构体sysuer 储存用户输入的用户名和密码
    函数声明checkUserValid() 验证用户输入信息
    函数声明menuList() 输出菜单
    函数声明userChoice() 获得用户选择

    头文件2achieve.h

    结构体或函数 功能
    结构体IDIOM 储存成语及其意思
    函数声明getIdiom() 将文件内容放入结构体数组中
    函数声明attainIdiom 查看文件中的成语
    函数声明attainIdiom_and_mean 查看文件中的成语及其意思
    函数声明getMean() 输入成语得到解释
    函数声明putIdiom(FILE*fp) 往文件中添加及其意思

    2.函数实现文件介绍。

    文件1:main.c

思路:
{
    先验证用户是否输入正确;
    输入正确则flag=1;
    读取文件内容;
    number!=0则读取成功;
    执行功能;
    fclose关闭文件;
}

文件2:checkUserValid.c

  • 功能:检查用户输入的信息是否正确

    文件3:menuList.c

  • 功能:提供菜单

    文件4:getIdiom.c

  • 功能:将文件中的成语及其意思存放到主函数的结构体数组中

    文件5:getMean_and_idiom.c

  • 功能:1.查看全部成语。2.查看全部成语及其意思。3.输入指定成语得到其解释

    文件6:input.c

  • 功能:往文件中写入任意数量的成语及其意思

    2.2.运行结果




    2.3大作业总结

    1.碰到问题及解决办法

  • 问题:怎么实现登录
    解决办法:定义结构体数组储存用户输入的账号与密码,再与文件每行内容一一比对,用while(!feof(fp))遍历文件
  • 问题:多文件编程不熟,刚开始程序无法运行
    解决办法:每个装函数的文件前都要include需要用到的头文件,且对应的头文件中要有函数声明和结构体
  • 问题:将文件中的成语及意思放到结构体数组中
    解决办法:定义结构体指针*p指向结构体数组,遍历文件,用strchr()函数找到:的位置,分别存放成语和成语意思
  • 问题:如何往文件中写内容
    解决方法:文件打开方式为a+,用fprintf()写入

    2.小结

    1.掌握熟悉了多文件编程的方法
    2.刚开始时不熟悉多文件编程,把代码弄得感觉很乱,函数太多也会乱
    3.刚开始一个文件只放一个函数,后面发现功能相似的函数放在同一个文件比较好

猜你喜欢

转载自www.cnblogs.com/sym2446/p/12002773.html