有什么想法,为什么以下代码无法正常工作?
我的结构体:
我的结构体:
struct Records
{
int Number;
char Name[20];
float Salary;
};
主程序中的代码:
FILE * binaryfile;
binaryfile = fopen("binaryfile.dat","r+b");
struct Records MyRecords;
printf("Name: \n");
gets(MyRecords.Name);
printf("Yearly Salary: \n");
scanf("%f%*c",&MyRecords.Salary);
fseek(binaryfile,2L*sizeof(struct Records),SEEK_SET);
fread(&MyRecords.Number, sizeof(MyRecords.Number), 1, binaryfile);
fwrite(&MyRecords.Name, sizeof(MyRecords.Name), 1, binaryfile);
fwrite(&MyRecords.Salary, sizeof(MyRecords.Salary), 1, binaryfile);
我错过了二进制课程,所以我对这个不是很熟悉,但这就是我想要做的:
使用fseek,我将跳转到第三条记录的开头,即“3,Random Name,50.00”。
然后,我将把3读入到MyRecords.Number中(我已经测试过到这一点)。 当指针位于名称上时,我尝试将其以及薪水覆盖为新的名称和薪水。
但出现问题。 我已尝试将文件打开更改为ab +,wb +,rb +,rb等,但均未成功。