【发布时间】:2014-03-23 17:11:06
【问题描述】:
各位程序员您好,我正在尝试了解我的代码的这个区域到底发生了什么。 问题:我将一些内容读入文件,然后我试图从文件中读回内容,以确保它是我放入文件中的正确内容,但它没有给我正确的输出,所以我这里有点困惑的是代码(将内容保存为二进制):
typedef struct acc
{
int id_no;
int pin;
float bal;
}Acc;
int Crte_acc(FILE *flepss)
{
int i,cnt;
Acc user[1000];
cnt = 1000;
for (i=1;i<1000;i++)
{
cnt+=1;
user[i].id_no = cnt;
user[i].bal=1000;
user[i].pin=0000;
fwrite(&user[i].id_no,sizeof(int),1,flepss);
fwrite(&user[i].pin,sizeof(int),1,flepss);
fwrite(&user[i].bal,sizeof(int),1,flepss);
}
return fclose(flepss);
}
是的,上面的代码需要一个文件指针和一个计数来保持 id 增加 1(1001,1002 等),bal 和 pin 要求我用这些数字设置 var。所以我想知道什么问题,这是我显示内容的代码。
void DisplyFile()
{
FILE *dfp;
int x;
Acc pruser[1000];
dfp = fopen("Account.dat","rb");
fseek(dfp,0,SEEK_SET);
while (1)
{
if(!feof(dfp))
{
for (x=1;x<1000;x++)
{
fread(&pruser[x].id_no,sizeof(pruser[x].id_no),1,dfp);
fread(&pruser[x].pin,sizeof(pruser[x].pin),1,dfp);
fread(&pruser[x].bal,sizeof(pruser[x].bal),1,dfp);
printf("%d ",pruser[x].id_no);
printf("%d ",pruser[x].pin);
printf("%.2f\n\n",pruser[x].bal);
}
}
else
{
break;
}
}
}
编辑:我的意思是内容错误,给我垃圾值以表明我对文件的写入没有保存。
【问题讨论】:
-
写入文件时如何创建/打开文件?
-
fp=fopen(acc,"wb");其中 acc 是 "Account.dat" 刚刚将 fp 传递给 crte_acc
-
你是说它没有给你正确的内容,你能详细说明一下吗?
-
哪个尺寸有
Account.dat? -
您可以尝试在读取函数的末尾添加
fclose()吗?还有一点是fwrite(&user[i].bal,sizeof(int),1,flepss);...bla是一个浮点数。