请问我这段程序错在那里了(50分)

  • 主题发起人 主题发起人 phosphor
  • 开始时间 开始时间
P

phosphor

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个16位的文件,可是这里读出的数和写入的数对不上,我不知道我的程序错在那里了。
希望各位朋友帮我看看(对不起,程序用c++ builder写的
代码:
[:(])


//写入一个文件
void __fastcall TForm1::Button5Click(TObject *Sender)
{
char buff[100];
long double ij=10;
HFILE Cj;
Cj= _lcreat("a://a.jk",0);
for (int j=0; j<100; j++) buff[j]=0; // 清空数组内容
_lwrite(Cj,buff,8); //先写入8位
for (int i=0; i<100; i++)
{
ij=ij+i;
buff=ij;
}
_lwrite(Cj,buff,strlen(buff)); //写入数据
_lclose(Cj);
}

//读出上边写入的文件
void __fastcall TForm1::Button4Click(TObject *Sender)
{
HFILE CFile;
long double jj;
long ll,lll;
char buff[100];
for (int j=0; j<100; j++) buff[j]=0;
if (OpenDialog1->Execute())
{
AnsiString Strt=OpenDialog1->FileName;
CFile=_lcreat(Strt.c_str(),OF_READ); //调用文件并设文件为可读
_lread(CFile,jj,8); //预先读出8位,因为在写入的时候从第九位开始写的
for (int i=0; i<100; i++)
{
_lread(CFile,&jj,10); // 读出文件,可是这里读出的数和写入的数对不上,
// 我不知道我的程序错在那里了。
}
}
}

 
http://www.CashRead.com/cgi-bin/page.cgi?r=shangjintong@ccsoft.com.cn
上面的网址可以赚美元,注册即可得到100$。并通过点击广告连接,继续赚美元。
 
c不是很熟, 不过看来是你写入时的错:
for (int i=0; i<100; i++)
{
ij=ij+i;
buff=ij;
}
ij定义为double的(delphi中长度为8字节, 我不知道c中是多长, 不可能是1字节长吧?)
当i=0时
buffer[0]~buffer[7]存放的是ij的内容
当i=1时
buffer[1]~buffer[8]存放ij的内容
看出错了吗?
从i=1时开始所有的数据都重叠了, 所以会产生你认为读出的数据不对的问题
 
后退
顶部