⑴c语言中怎么把一个结构体数组写入文件?C语言结构体数组的输入方式
⑵本文目录c语言中怎么把一个结构体数组写入文件C语言结构体数组的输入方式数组与结构体的区别c语言中怎么把一个结构体数组写入文件C语言把一个结构体数组写入文件分三步:、以二进制写方式(wb)打开文件、调用写入函数fwrite()将结构体数据写入文件、关闭文件指针相应的,、数据类型不同数组是相同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等的集合,是C语言中聚合数据类型(aggregatedatatype)的一类,返回错误信息{printf(“open?file?for?write?error
⑶“);return?-;}fwrite(?&student,?sizeof(struct?stu),?,?fp?);?//向文件中写入数据fclose(fp);//关闭文件return?;}int?read_file(){FILE?*fp=NULL;struct?stu?student;fp=fopen(?“stu.dat“,?“rb“?);//b表示以二进制方式打开文件if(?fp?==?NULL?)?//打开文件失败,C语言结构体数组的输入方式C语言中,读文件也要与之匹配:、以二进制读方式(rb)打开文件、调用读文件函数fread()读取文件中的数据到结构体变量、关闭文件指针参考代码如下:#include《stdio.h》struct?stu?{char?name;int?age;double?score;};int?read_file();int?write_file();int?main(){if?(?write_file()?《??)?//将结构体数据写入文件return?-;read_file();?//读文件,组成数组的各个变量称为数组的分量,结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。
⑷c语言中怎么把一个结构体数组写入文件
⑸C语言把一个结构体数组写入文件分三步:
⑹以二进制写方式(wb)打开文件
⑺调用写入函数fwrite()将结构体数据写入文件
⑻相应的,读文件也要与之匹配:
⑼以二进制读方式(rb)打开文件
⑽调用读文件函数fread()读取文件中的数据到结构体变量
⑾#include《stdio.h》struct?stu?{char?name;int?age;double?score;};int?read_file();int?write_file();int?main(){if?(?write_file()?《??)?//将结构体数据写入文件return?-;read_file();?//读文件,并显示数据return?;}int?write_file(){FILE?*fp=NULL;struct?stu?student={“zhang?san“,?,?.};fp=fopen(?“stu.dat“,?“wb“?);?//b表示以二进制方式打开文件if(?fp?==?NULL?)?//打开文件失败,返回错误信息{printf(“open?file?for?write?error
⑿“);return?-;}fwrite(?&student,?sizeof(struct?stu),?,?fp?);?//向文件中写入数据fclose(fp);//关闭文件return?;}int?read_file(){FILE?*fp=NULL;struct?stu?student;fp=fopen(?“stu.dat“,?“rb“?);//b表示以二进制方式打开文件if(?fp?==?NULL?)?//打开文件失败,返回错误信息{printf(“open?file?for?read?error
⒀“);return?-;}fread(?&student,?sizeof(struct?stu),?,?fp?);?//读文件中数据到结构体printf(“name=“%s“?age=%d?score=%.lf
⒁“,?student.name,?student.age,?student.score?);?//显示结构体中的数据fclose(fp);//关闭文件return?;}
⒂fwrite(constvoid*buffer,size_tsize,size_tcount,FILE*stream);
⒃buffer:指向结构体的指针(数据首地址??(size:一个数据项的大小(一般为结构体大小(count:要写入的数据项的个数,即size的个数??(stream:文件指针。
⒄C语言结构体数组的输入方式
⒅语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
⒆结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
⒇结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
⒈在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
⒉在C语言中,定义结构体数组和定义结构体变量的方式类似;
⒊structstu{
⒋char*name;//姓名
⒌intnum;//学号
⒍intage;//年龄
⒎chargroup;//所在小组
⒏floatscore;//成绩
⒐表示一个班级有个学生。
⒑结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用for循环一个一个地使用结构体数组中的元素。
⒒下面编写一个程序,编程要求:从键盘输入个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。
⒓#include《stdio.h》
⒔#include《string.h》
⒕voidOutputSTU(structSTUstu);
⒖//函数声明,该函数的功能是输出学号最大的学生信息
⒗intmain(void)
⒘structSTUstu;
⒙for(i=;i《;++i)
⒚printf(“请输入第%d个学生的信息:“,i+);
⒛scanf(“%s%d%c%s“,
stu《i》.name,
.age,&stu《i》
i》.num);/*%c
前面要加空格,不然输入时会将空格赋给%c*/
OutputSTU(stu);
voidOutputSTU(structSTUstu)
structSTUstumax=stu;
for(j=;j《;++j)
if(strcmp(stumax.num,stu
.num)《)//strcmp函数的使用
stumax=stu;
printf(“学生姓名:%s学生年龄:%d学生性别:%c学生学号:
“,stumax.name,
stumax.age,stumax.
sex,stumax.num);
请输入第个学生的信息:小红FZ
请输入第个学生的信息:小明MZ
请输入第个学生的信息:小七FZ
请输入第个学生的信息:小欣FZ
请输入第个学生的信息:小天MZ
学生姓名:小明学生年龄:学生性别:M学生学号:Z
数组与结构体的主要区别如下:
数组是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量;
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
数组是相同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等的集合;
结构体是不同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等的集合。
数组可以直接利用下标访问;
而结构体必须使用结构中成员的变量名。