结构体怎么写入文件?又如何读取啊

结构体如何写入文件?又怎么读取啊?
我的结构体用指针表示的,学号,姓名什么的,输入数据后想写入文件,可是不知道用什么方式写,2进制的那个?我以后还要对文件内容进行查询,排序,是不是要先读到内存啊?另外原来是链表创建的话,是否可以还原成链表?我晕啊,不知道用什么方法,很乱。总之,不能用结构体数组,要用链表指针,各位提供一下思路或者方法吧,谢谢。
struct   student
{
char   number[4];
char   name[50];
int   age;
float   score[5];
struct   student   *next;
};
比如我
cin.get(AddTemp,80);
p1-> score[4]=CheckScore(AddTemp);后如何写入文件啊?以后读取时可以整个结构体记录都读出来方便对 age等排序,查询?

------解决方案--------------------
1、直接写入文件就好了,可以不用二进制。
2、当然要读入内存了,否则在硬盘上操作数据吗?
3、读入的时候建立链表就可以了,根据长度来读,用sizeof,读出一个结构体的数据,建立一个节点,链上……写的时候相反,对链表做一个循环,一个节点一个节点往文件里写。

------解决方案--------------------
如果你的链表是在堆上分配内存,在add()中的更改,对于save()也管用。
------解决方案--------------------
链表需要动态建立;
输入数据建立链表就一定要手动吗:);
对应,那不就是赋值吗?