从C中读取二进制文件

lel*_*uch 0 c

我有以下结构:

struct Records
{
    int Number;
    char Name[20];
    float Salary;
};
Run Code Online (Sandbox Code Playgroud)

使用以下方法编写两条

fwrite(&MyRecords.Number, sizeof(&MyRecords.Number), 1, binaryfile);
fwrite(&MyRecords.Name, sizeof(&MyRecords.Name), 1, binaryfile);
fwrite(&MyRecords.Salary, sizeof(&MyRecords.Salary), 1, binaryfile);
Run Code Online (Sandbox Code Playgroud)

写完后,我无法从中读取.

FILE * read;
read = fopen("binaryfile.dat","rb");

for(int x =0;x<2;x++)
{
fread(&records.Number, sizeof(records.Number), 1, read);
fread(&records.Name, sizeof(records.Name), 1, read);
fread(&records.Salary, sizeof(records.Salary), 1, read);
printf("%d %s %f\n",records.Number,records.Name,records.Salary);
} 
Run Code Online (Sandbox Code Playgroud)

第一行打印两次,浮动出现一些奇怪的数字.我在过去的2个小时内检查了两倍和三倍但我无法找出我做错了什么:(