c博客06-结构体&文件
1.本章学习内容总结
1.1学习内容总结
- 结构体的定义,成员赋值
struct 结构体名
{
定义 成员1
定义 成员2
}={成员1类型数据,成员2类型的数据}(赋值可不在这写);
因为结构体定义频繁,需要一个简短的新变量名
typedef struct 结构体名
{
...
...
}新变量名;
- 结构体数组排序做法
struct student students[n];
或者利用typedef STU;然后用STU students[n];
对成员的引用方法students[n].成员名
选择法
for i=0 to n-1
index=i;
for k=i+1 to n
if students[i].成员>当前的数
记录当前位置index=k
end if
end for
交换两数//循环外面交换
end for
冒泡法
for i=0 to n-1
for k=1 to n//循环里面交换
比较大小
小的放前面(交换)
end for
end for
- 结构体指针怎么用
STU student1,* p;
p=&student1;
成员引用方法
p->成员名,或(*p).成员名,前者更容易使用
函数传参时,比起把结构体所用数据传进去,传地址的话效率更高也更方便
- 共用体、枚举类型做法
union 共用体名
{
成员;
}
枚举类型
enum workdays{Mon,Tue,Wed,Thu,Fri};
引用时只能引用上面声明的
- 文件读写,文件中数据如何读进结构体数组
FILE* FP;
打开文件
if((fp=fopen("地址://文件名","看需求填下面括号的内容"))==NULL)
{
printf("open file error");
exit(0);
}
("r" 打开只读文件
"w" 建立只写新文件
"a" 打开添加写文件
"r+" 打开读/写文件
"w+" 建立读/写新文件
"a+" 打开读/写新文件)
读进结构体
while(!feof(fp))
{
适情况使用fgets或fscanf
}
1.2本章学习体会
- 感觉到难度加深了,部分语法理解的不是很透彻甚至一知半解,得多次问同学才能弄明白
- 600+
2.综合作业--我爱成语
2.1文件介绍
头文件介绍
idiom.h
主函数介绍
功能函数介绍
菜单
获取用户名和密码
登录
输入
- 这个函数用来保证输入的数字合法,不会被字符或过长的数字或其他要求外的数字导致程序崩溃
获取成语数据
查询条件输入
- 这个函数的功能是,先判断用户输入是否合法,再让用户输入指定个数的汉字,用于传给查询成语的函数
查询成语
- 根据输入汉字的个数查找成语
输出查找的成语
2.2运行结果
登录界面
-
界面
-
登录成功
-
三次登录失败退出
查询
-
界面
-
错误输入汉字个数
-
查询无结果
-
单字查询
-
多字查询
2.3大作业总结
1.碰到的问题及解决方法
- 登录的时候遇到过第三次输入的无论是什么都会出错,这个问题是结构体首地址改变没有重置导致,在每次循环重置后解决
- 查找成语出现过许多错误,有乱码,报错,等,原因分别有结构体超出原本定的数值也就是循环后没有重置回首地址,以及传参的时候输入的汉字传的不完全
2.小结
- 比起上次的大作业,我学会了如何分装更多的函数,以及函数指针的运用,也熟悉了结构体的使用,文件的打开和读取等