问题描述:C语言菜鸟,做一道关于资金账户管理的练习,输入一个记录ID,如果文件中已存在该记录,则输入新的记录信息并更新资金账户文件中相应记录的信息。
部分代码:
```printf("Please enter a log id:\n"); /*输入相应信息*/
scanf("%ld", &num);
logcount = getLogcount(cfptr);
if(num <= logcount){
printf("Input logdate(format:2006-01-01):") ;
scanf("%s", log.logdate);
printf("Input lognote:");
scanf("%s", log.lognote);
printf("Inpute Charge: Income+ and expend-:");
scanf("%lf", &log.charge);
/*更新Log信息*/
log.logid = num;
if(num == 1){
log.balance = log.charge;
fwrite(&log, size, 1, cfptr);
}
else{
fseek(cfptr, size*(num-2), SEEK_SET); /*跳转到上一条记录*/
fread(&log_old, size, 1, cfptr);
log.balance = log.charge + log_old.balance; /*log存储应该修改的记录信息*/
fread(&log_old, size, 1, cfptr); /*读入当前记录*/
differ = log.charge - log_old.charge; /*新输入的信息与当前记录的差异,用循环对后续记录进行修改*/
fseek(cfptr, -size, SEEK_CUR);
fwrite(&log, size, 1, cfptr); /*修改当前记录*/
}
while(!feof(cfptr)){ /*更新后续记录信息,出问题的地方,文件指针好像没动,陷入死循环*/
fread(&log, size, 1, cfptr);
log.balance = log.balance + differ;
fseek(cfptr, -size, SEEK_CUR);
fwrite(&log, size, 1 ,cfptr);
}
}