奇怪的循环

jddj007 2004-04-30 05:20:37
代码:

FILE *fp,*ff,*fk;
char st[144];
char mm[128];
int i,j;
long nums;

char sk[80];
if((fp=fopen("1.mdf","rb"))==NULL) { Application->MessageBoxA("ÎÞ·¨&ò&&Îļ&","&íÎó",MB_OK); return; }
if((ff=fopen("1.txt","wb"))==NULL) { Application->MessageBoxA("ÎÞ·¨&ò&&Îļ&","&íÎó",MB_OK); return; }
if((fk=fopen("2.txt","wb"))==NULL) { Application->MessageBoxA("ÎÞ·¨&ò&&Îļ&","&íÎó",MB_OK); return; }
i=0;
//while(!feof(fp))
for(nums=0;nums<10;nums++)
{
while(!(st[0]==';'&&st[1]=='7'&&st[2]=='9'&&st[3]=='8')) fread(st,4,1,fp);
itoa((ftell(fp)-4),sk,10);
for(j=4;j<144;j++) st[j]=fgetc(fp);
st[144]=0;
if(st[84]==0&&st[82]==0&&st[80]==0&&st[78]==0&&st[76]==0&&st[74]==0&&st[72]==0&&st[70]==0&&st[68]==0&&st[66]==0)
{
//fwrite(st,144,1,ff);
Memo2->Lines->Add(String(nums));
Application->MessageBoxA(String(nums).c_str(),"pk",MB_OK);
putstr(st,ff);
fputc(0x09,ff);

for(j=106;j<144;j++)
{
if(st[j]==0x20) break;
else mm[j-106]=st[j];
}
mm[j-106]=0 ;
putstr(mm,ff);
fputc(0x0d,ff);
fputc(0x0a,ff);
memo->Lines->Add(String(st));
Memo1->Lines->Add(String(sk));
fwrite(sk,strlen(sk),1,fk);
fputc(0x0d,fk);
fputc(0x0a,fk);
}
else
fseek(fp,-140,SEEK_CUR);
for(j=0;j<144;j++) st[j]=0;
}
fclose(fp);
fclose(ff);
fclose(fk);


因为数据库文件损坏无法恢复,但有重要的数据要挽救所以我用这段代码从一个400多MB的MDF文件中读取所需要的数据,但是不知道为什么这是个死循环,nums的值始终为0,请大家帮忙。

后来我又试了一下,在devc和bc3.1下都是正常的就是在BCB6里不正常,难道是BCB的BUG???
...全文
22 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bhdxia 2004-04-30
  • 打赏
  • 举报
回复
老兄,你的代码极不规范,这么长,谁有心思看你这乱七八糟的.
TomSonChina 2004-04-30
  • 打赏
  • 举报
回复
帮你顶

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧