fread是从输入文件中读取一个数据块。
首先,你的代码中是直接读取结构体大小的数据块,但无法自动将数据块中的字符序列或整数对应到结构体中的每个成员。
其次,你的结构体中字符数组的大小设置好了,所以fread读入数据块中,前10个字节赋给了name,第11到第14个字节赋给了num,以此类推。。。
最后,你会发现你结构体的大小是有问题的,即sizeofs(struct student)的返回值默认是36,而不是33,。这是因为你的工竖知银程属性里面有一项是“结构成员对齐”,默认值时猛凳是按照4byte对齐的,因此这时sizeof(struct tudent)的返回值是36,name的大小虽然是10,但是按照4byte对齐的,所以占余宴12个字节,因此大小为12+4+4+16=36.可以将“结构成员对齐”改为1的话,则大小为33。
总之,fread不适合与结构体联合使用,fread适合读取基本类型的数据。