奇怪的循环
代码:
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???