关于文件清零有关问题

关于文件清零问题求助
大家好,我在用标准IO清空文件时遇到了点问题,请高手帮忙看下,谢谢!
   首先我这个文件中本身有数据,而且是以结构体形式存放的,我在一个函数中做了如下操作:
             FILE *deleteall_r = fopen("./wenjian/defence/remote.txt","w");
     fclose(deleteall_r);
   然后在另一个函数中做查看文件内容(读取到结构体中并显示)
             
struct remotenumber remote_in[5];
FILE *inquire_r = fopen("./wenjian/defence/remote.txt","r");
while(!feof(inquire_r))
{
fread(remote_in,sizeof(remote_in),1,inquire_r);

}
fclose(inquire_r);
printf("查询结果如下:\n");
for(i=0;i<*count;i++)
{
printf("编号:%d    编码:%d\n",remote_in[i].order,remote_in[i].number);
}

问题:先做了文件清空后,再做文件查看。
    当没有退出主函数时,文件查看中printf出来还有数据,不是正常的数据。
    当退出主函数后,重新打开主函数,并重新做文件查看,printf出来就没数据了,正常了。

请问这是为什么啊,谢谢!
------解决方案--------------------
关键在于需确保fclose有执行到。
------解决方案--------------------
FILE *deleteall_r = fopen("./wenjian/defence/remote.txt","w");

这里加个fflush(deleteall_r);试试;还不行就在这句前面加句rewind(deleteall_r);

fclose(deleteall_r);

根本原因就是操作系统维护了文件系统,而fopen都是文件系统暴露的接口的ANSI C封装(即文件系统有一套接口,fopen在这个接口上继续封装了一下)。
可以认为文件系统是维护了“文件对象”的内部状态的。只是open然后close,不一定导致内部状态的更新,但是关闭程序是可以的更新这个状态的。

更具体的内容可以参考下APUE中关于文件IO的章节。

------解决方案--------------------
程序----进程
文件(在hardisk)----文件(在 memory)
------解决方案--------------------
加个fflush(deleteall_r); 對的