zoukankan      html  css  js  c++  java
  • c博客06-2019-结构体&文件

    1.本章学习总结

    1.1 学习内容总结

    • 结构体如何定义、成员如何赋值
      结构体的定义以及赋值:
      结构体的一般形式:
      struct 结构体名
      {
      数据类型   成员名1;
      数据类型   成员名2;

      数据类型   成员名n;
      };
      1.先定义结构体类型再定义变量名:
            struct 结构体名
           {
                   成员列表;
           };
           struct 结构体名 变量名;
      2.在定义类型的同时定义变量。
           这种形式的定义的一般形式为:
              struct 结构体名
              {
                        成员列表;
              }变量名; 
      3.直接定义结构类型变量
          其一般形式为:
               struct      //没有结构体名
               {
                         成员列表;
                }变量名;

    • 结构体数组排序做法
      按照结构体数组的某一项排序,那么一个结构体包含的其他元素仍保持不变。也就是说只能选择其中一项作为指标进行排序,相应的其他值对应不变化。

    • 结构体指针怎么用
      结构指针指向结构变量;
      struct student s1;
      p=&s1;
      1.用p访问结构成员:
      eg:
      p).num=101;
      *p是p指向的结构变量
      2.用指向运算符——>访问指针指向的结构成员:
      p->num=101;
      以上用法和s1.num=101;是等价的。

    • 共用体、枚举类型做法
      共用体类型数据的特点:
      1.同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种。换句话说,每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都在存在和起作用。
      2.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。
      3.共用体变量的地址和它的各成员的地址都是同一地址。
      4.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。
      5.共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。

    对共用体的成员的引用与结构体成员的引用相同。但由于共用体各成员共用同一段内存空间,使用时,根据需要使用其中的某一个成员。

    枚举:
    枚举将同一类型的数据统一存入一个指针数组中,每个数组成员都有自己的值并且相互之间可以进行比较;

    • 文件读写,文件中数据如何读进结构体数组
      文件读写:fopen函数和fclose函数,要注意打开失败的情况;
      读进结构体:
      eg:
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%d",&student[i].num,student[i].name,&student[i].score);
        i++;
    }
    

    1.2 本章学习体会

    关于共用体的用法我还是不太懂,还有就是感觉好像课程走的很紧,应对考试也焦头烂额,害,难受啊老铁
    周代码量:

    第一周 第二周
    235 225

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

    2.1.文件介绍

    头文件介绍

    头文件1.h

    结构体:
    成语信息:成语数组和成语含义系统;
    用户信息:用户姓名,做对的题目数,用户分数
    函数:
    读取文件和写入文件的函数;

    int readIdiom(Idiom idiom[], FILE * fp);
    int readUser(User user[], FILE * fp);
    void writeUserRank(FILE * fp, User user[], int user_count);
    void writeUser(FILE * fp, User user[], int user_count);
    

    程序通用的函数;

    void userSort(User user[], int user_count);
    

    关于菜单的函数;

    int loginMenu(User user[], int user_count);
    int gameMenu(Idiom idiom[], int idiom_count, int * score);
    void rankMenu(User user[], int user_count);
    
    • 头文件代码截图:

    2.函数实现文件介绍。

    文件1:main.c

    main函数:
    进行文件的读取和退出;
    登陆页面和结束页面,清屏;
    定义用户数量和成语数量;
    对其他函数的调用;

    • 主要代码截图:

    文件2:Login.c
    登录界面,判断用户是否正确;
    int loginMenu(User user[], int user_count);
    答题界面提醒;
    int gameMenu(Idiom idiom[], int idiom_count, int * score);
    排行榜输出;
    void rankMenu(User user[], int user_count);
    
    • 主要代码截图:




    文件3:idiom.c
    文件的读写,数据读取
    int readIdiom(Idiom idiom[], FILE * fp);//向文件读取数据,如果读取到文件末尾,返回非0
    int readUser(User user[], FILE * fp);用户信息读取
    void writeUserRank(FILE * fp, User user[], int user_count);//向文件写入数据
    void writeUser(FILE * fp, User user[], int user_count);写入用户信息
    
    • 主要代码截图:


    2.2.运行结果

    1.登录界面

    2.游戏界面


    3.排名界面

    2.3大作业总结

    找不到文件 没将成语文件拖入文件夹
    调试不通过 SDL检查没关
    输出成语含义错误 自定义的文件我还没改
  • 相关阅读:
    SignalR实现服务器与客户端的实时通信
    UIWebView全解
    查漏补缺
    Django的生命周期图解
    权限系统(第一次测试)
    Django权限管理测试
    Django_自带的admin管理页面
    django笔记整理
    cookie/session(过时的写法)
    图书管理系统设置登录验证(cookies)
  • 原文地址:https://www.cnblogs.com/zyc01-jm/p/12045305.html
Copyright © 2011-2022 走看看