好吧,在向后读取我的文件并确保我不在顶部时,在调试器中,我意识到 ftell 停止返回位置,任何人都可以提供一些信息吗?
int Dtl(Acc *user)
{
FILE *dtl_Fp;
trans_Pass dislog[10];
int i=0,x=-1,r_Val;
My_Convertor();
dtl_Fp=Opnfile("Tempfile",r_B,dnt_ret_fp);
system("cls");
printf("Types FormatnW-WithdrawtDep-DeposittSch-Pay School FeennID:NOtTyp:AmountttDaten");
while (1)
{
fseek(dtl_Fp,sizeof(trans_Pass)*(x),SEEK_END);
fread(&dislog[i],sizeof(trans_Pass),1,dtl_Fp);
r_Val=ftell(dtl_Fp);
if ((ftell(dtl_Fp)==0)){break;}
if(dislog[i].id_No==user->id_No){printf("%snn",dislog[i].info);}
i++;x--;
}
fclose(dtl_Fp);
}
它可能与以下方面有关:
r_Val=ftell(dtl_Fp);
if ((ftell(dtl_Fp)==0)){break;}
你调用了 ftell() 两次,但从未使用 r_val。
代码段中没有任何内容允许我查看 fseek() 中的参数 sizeof(trans_Pass)*(x)
的值,但如果它不是合法值(0,文件大小),则可能会导致意外结果。
不能保证ftell()
不会返回 -1。 你没有检查那个。 在错误条件下,ftell 返回 -1,然后将 errno 设置为非零值,该值可用于获取有关错误性质的信息。