char name
int number
struct student *next
}
这样你定义了三个字段,姓名,number
我不知道你为什么这么定义,如果是我可能这么定义
struct student {
char name/*学生姓名*/
int 性别/*1代表femail (女性), 0 代表mail(男性)*/
int age
struct student *next/*为了用链表实现而采用*/
};
这样完全可以实现你需要的数据类型.只需要再加上一些算法就可以了.
如果还有什么问题可以与我联系.
一般工业上都会使用 typedef 来定义公司内部的统一定义如
typedef struct student {
}
C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件
2、调用写入函数fwrite()将结构体数据写入文件
3、关闭文件指针
相应的,读文件也要与之匹配:
1、以二进制读方式(rb)打开文件
2、调用读文件函数fread()读取文件中的数据到结构体变量
3、关闭文件指针
参考代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<stdio.h>
struct stu {
char name[30]
int age
double score
}
int read_file()
int write_file()
int main()
{
if ( write_file() <0 ) //将结构体数据写入文件
return -1
read_file()//读文件,并显示数据
return 0
}
int write_file()
{
FILE *fp=NULL
struct stu student={"zhang san", 18, 99.5}
fp=fopen( "stu.dat", "wb" )//b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息
{
printf("open file for write error\n")
return -1
}
fwrite( &student, sizeof(struct stu), 1, fp )//向文件中写入数据
fclose(fp)//关闭文件
return 0
}
int read_file()
{
FILE *fp=NULL
struct stu student
fp=fopen( "stu.dat", "rb" )//b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息
{
printf("open file for read error\n")
return -1
}
fread( &student, sizeof(struct stu), 1, fp )//读文件中数据到结构体
printf("name=\"%s\" age=%d score=%.2lf\n", student.name, student.age, student.score )//显示结构体中的数据
fclose(fp)//关闭文件
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)