如题,我用CB编了读写二进制的程序,其中,用的C语言fopen和fclose语句.。
由于程序要读不同的文件,比如,读完A后,关闭A,然后再读B,然后再关闭B,用的是C语言fopen和fclose语句,可是每次关闭前一个文件后,再读下一个,为什么WINDOWS提示我的前一个还被我的程序占用着?

比如,我fopen  A后,fclose A  然后再fopen  B,为什么程序还占用着A?

本人是菜鸟,请大家一定指教啊~~~

这里是原代码:
void __fastcall TMainForm::FileOpen(TObject *Sender)
{
if (OpenDialog->Execute())
{
//打开对话框里选中的文件名,读文件..
                //在前面定义 AnsiString  Ax1; 
          Ax1=OpenDialog->FileName;
          fp=fopen(Ax1.c_str(),"rb");
          //读文件内容..
          …………………..
          …………………….     
          //关闭文件,
          fclose(fp);
          //—————————

        }
}

Ax1作为整体变量,还要在别的函数里使用…

就这样,诸位可以试一下,试着打开一些文件,再关闭,可是WINDOWS提示,那些关闭的文件,还被这个程序占用着,奇怪~~~

flush

我已经搞定了这个问题,是我在中间加了一个OPEN语句,没有CLOSE,如果仅仅用上面的代码,没问题的.
不管怎么样,我还是要感谢回帖的二位,我想给你们每人加10分,不知道怎么操作~~
^_^

用线程,等待结束后Close

up

fopen后再fclose是没有问题的.当然必须配对使用.

一个三角也可以发超过100分帖子?

呵呵 用处就在这里

现在的csdn只要你登录每天都给分用…的,所以不要当心没有分。。。

呵呵.已经解决啦

晚了点,
接分快乐!