Loading...

c博客06-结构体&文件

1.本章学习总结

1.1 学习内容总结

No.1结构体如何定义、成员如何赋值

结构的定义

定义一个结构的一般形式为:

struct 结构名
{
成员表列
}

成员表由若干个成员组成,每个成员都是该结构的一个组成部分。
对每个成员也必须作类型说明。
例如:

struct stu
{
int num;
char name[20];
int age;
}

说明结构变量有以下三种方法。以上面定义的stu为例来加以说明。

1.先定义结构,再说明结构变量。 如:

struct stu
{
int num;
char name[20];
int age;
};
struct stu boy1,boy2;

说明了两个变量boy1和boy2为stu结构类型。

也可以用宏定义使一个符号常量来表示一个结构类型, 例如:

 #define STU struct stu
STU
{
int num;
char name[20];
int age;
};
STU boy1,boy2;  

2.在定义结构类型的同时说明结构变量。例如:
struct stu

{
int num;
char name[20];
int age;
}boy1,boy2;  

3.直接说明结构变量。
例如:

struct
{
int num;
char name[20];
int age;
}boy1,boy2;  

成员赋值:

struct student

    {

        long int num;

        int      age;

        char*    name;

    }st1={200,18,"zhangsan"};
struct student  st2,st3; 
st2.num=199;

    st2.age=19;

    st2.name="lisi";

结构体定义并不是定义一个变量,而是定义了一种数据类型,这种类型是你定义的,它可以和语言本身所自有的简单数据类型一样使用(如 int )。

结构体本身并不会被作为数据而开辟内存,真正作为数据而在内存中存储的是这种结构体所定义的变量。

结构体变量的大小:这是由这种结构体类型的定义决定的,结构体是由多个成员组成,可以想象为了同时存储结构体的每一个成员,那么结构体变量的存储大小,就应该是所有分量的存储空间的总合。
—————————————————————————————————————————————

No.2结构体数组排序做法

选择法

for 0 to n-1
  min=i;
  for i+1 to n
    if 比较数据
       更换位置
    end if
  end for
end for

冒泡法

for 1 to n//循环数为i
   for 0 to i-1
     if 比较数据大小 
         对换位置
     end if
   end for
end for

—————————————————————————————————————————————

No.3结构体指针怎么用

struct student {long int num;int age;char* name; }STU;
STU s1={"1001", "18","lmh"};
STU p; p=&s1;
可以用它访问结构体成员:
(
p).num=100; p->age=100;
—————————————————————————————————————————————

No.4共用体、枚举类型做法

共用体
定义与引用
union 共用体名
{
共用体成员
}变量表列;

共用体名.共用体成员

1.共用体变量所占内存长度等于最长的成员的长度
2.共用体变量起作用的成员是最后一次存放的成员
3.共用体变量的地址和它各个成员的地址是同一个地址

枚举类型
声明方式
enum weekday{sun,mon,tue,wed,thu,fri,sat};//声明枚举类型weekday
enum weekday d1,d2; //定义枚举变量,d1,d2的值仅限于枚举类型weekday列举的值的范围

No.5文件读写,文件中数据如何读进结构体数组

while(!feof(fp))                     //读取一组数据后指针指向下一组数据,并且判断是否指向最后一行 
	{ 
		fscanf(fp,"%d,%s,%d,%d,%s",&student[i].no,&student[i].name,&student[i].sex,&student[i].age,&student[i].major);
		i++;
	}             
	j=i;
	for(i=0;i<j;i++)
		printf("%s,%s,%s,%d,%s\n",student[i].no,student[i].name,student[i].sex,student[i].age,student[i].major);
	fclose(fp);				//关闭文件; 
	return 0;
}

文件打开方式:
打开方式:(文本文件)

方式 含义
"r" 打开只读文件
"w" 建立只写新文件
"a" 打开添加写文件
"r+" 打开读/写文件
"w+" 建立读/写新文件
"a+" 打开读/写新文件

1.2 本章学习体会

感觉没学习一个新的章节都是一片新的天地,真正理解了C语言的真的是浩如烟海,这次学习的结构体,又再次颠覆了以前写代码的习惯,但每次的改变都好像让我们的程序更加的完善,更加的清晰易懂。学习了这次的结构体,并且大多的是应用在多文件的程序中的,我认为结构体是以后做程序的一个变量的主要载体,因为不管是以后学习也好,工作也好,所需要的变量肯定不是单一的,数量肯定也不少。再者,多文件编程在头文件中也可以清晰的看出,我们所需要的变量是什么,我们要干什么,都是很方便的。希望随着越来越深入的学习,一步一步的提升自己。

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

2.1.文件介绍

头文件介绍

2.函数实现文件介绍。
文件1:main.c

文件2:function.c

文件3:Menu.c

2.2.运行结果

2.3大作业总结

首先,这次的大作业没有做完整,很遗憾,每次大作业确实都能带给我们很多,能收获很多,这次的大作业是最复杂的一次,相当于是一个小程序,而且如果能完整的坐下来的话,相当于把我们这个学期学的知识都复习了一遍,感觉每次完成一个小函数并且找出自己的错误并且解决都能感觉到自己进步了,也会有一种自我满足感,这一次我比以前多用了一个改变字体颜色的函数和一个清屏函数,其实C语言的函数库里面还是有很多我们意想不到的函数功能实现,其实认真去研究其实是很有意思的。希望下次看到进步的自己

posted @ 2019-12-16 11:02  孤海  阅读(284)  评论(0编辑  收藏  举报