【求助】对于文件的特定数据进行更新,最后一步实现不了,求解,代码如下
#include <stdio.h>#include <string.h>
#include <stdlib.h>
struct data
{
char account[20];
char password[20];
char name[20];
float balance;
};
#define N 3
int main()
{
int i;
struct data st,user,user1,user2;
char account[20],auser[20],nuser[20];
char password[20];
int m;
float money;
scanf("%s",account);
scanf("%s",password);
FILE *fp,*fpmaster,*fpuser;
fp=fopen("data002.dat","rb");
if(fp==NULL)
{
printf("Cannot open file strike any key exit!");
exit(0);
}
for(i=0;i<3;i++)
{
fseek(fp,i*sizeof(struct data),SEEK_SET);
fread(&st,sizeof(struct data),1,fp);
if(strcmp(st.account,account)==0&&strcmp(st.password,password)==0)
{
printf("%s %s %s %.2f\n",st.account,st.password,st.name,st.balance);
fpmaster=fp;
printf("————————-\n");
break;
}
}
printf("请输入转账用户账号:");
scanf("%s",auser);
printf("请输入转账用户用户名:");
scanf("%s",nuser);
printf("请输入转账金额: ");
scanf("%f",&money);
for(i=0;i<3;i++)
{
fseek(fp,i*sizeof(struct data),SEEK_SET);
fread(&user,sizeof(struct data),1,fp);
if(strcmp(user.account,auser)==0&&strcmp(user.name,nuser)==0)
{
user.balance+=money;
st.balance-=money;
printf("%s %s %s %.2f\n",user.account,user.password,user.name,user.balance);
printf("%s %s %s %.2f\n",st.account,st.password,st.name,st.balance);
fpuser=fp;
printf("————————-\n");
break;
}
}
fclose(fp);
//更新
fp=fopen("data002.dat","rb+");
if(fp==NULL)
{
printf("Cannot open file strike any key exit!");
exit(0);
}
for(i=0;i<3;i++)
{
fseek(fp,i*sizeof(struct data),SEEK_SET);
fread(&user,sizeof(struct data),1,fp);
if(strcmp(st.account,account)==0&&strcmp(st.password,password)==0)
{
fwrite(&st,sizeof(struct data),1,fp);
break;
}
}
for(i=0;i<3;i++)
{
fseek(fp,i*sizeof(struct data),SEEK_SET);
fread(&user,sizeof(struct data),1,fp);
if(strcmp(user.account,auser)==0&&strcmp(user.name,nuser)==0)
{
fwrite(&user,sizeof(struct data),1,fp);
break;
}
}
fclose(fp);
return 0;
}