日期:2014-05-16  浏览次数:20726 次

这个问题和fclose()函数有关系么?
代码大致上是整个样子的
int   main()
{
        FILE   *sfd;

        sfd   =   fopen(sfd,   "a+b ");
        .
        .
        .
        fwrite(buff,1,strlen(buff),sfd);
        .
        .
        .
        while(1)
        {  
                sleep(1);
                fwrite(buff,1,strlen(buff),sfd);
        }
        fclose();
        return   0;
}
这样向文件写是如何也写不进去的。但是不要while(1)死循环(只用第一个fwrite())、或者将while(1)变成像while(i--)这样的不是死循环,或者将while(1)中改为:
while(1)
{
        sfd=fopen(filename, "a+b ");
        sleep(1);
        fwrite();
        fclose(sfd);
}
这样的都可以在文件中写入相应的内容。

请问高手这是什么原因呢?是因为最上面的程序在结束的时候没有执行fclose()么?因为我分析所有的差别只有下面的三种情况能保证程序在推出的时候都执行fclose(),虽然最后一种方法可能也不执行

------解决方案--------------------
你在找找,应该有其他原因.或则代码的其他地方.
------解决方案--------------------
缓冲区问题。
------解决方案--------------------
应该是缓冲区的问题.
由于是全缓冲, 循环的时候一直在往缓冲区中写, 而无法输出到文件.