2

如何将数据实时写入文件?我的意思是:一个程序获取数据并使用命令将它们放入文件(我们可以说out.txt) ,然后另一个程序从文件( out.txtfprintf(...) )读取数据并详细说明它们。

我有这样的流程:

fp=fopen("out.txt","w+");

    while(...) {

    ...

    fprintf (fp,"\n %s", data);

}

fclose(fp);

通过该流程,我在关闭文件后将数据放入文件( out.txt )。

有没有办法将数据实时写入文件?

4

1 回答 1

1

我怀疑你的意思是同时当你说实时。同时访问文件需要打开共享文件。这可能是管道或其他一些进程间通信。根据要求,它也可能是磁盘上的一个简单文件。Windows 允许通过_fsopen打开共享文件。

#include <share.h> // required for manifest constants for shflag parameter.

fp = _fsopen("out.txt","w+",_SH_DENYWR); // e.g. _SH_DENYWR denies write access
   .
while(...) {
   .
   .

另一个进程可以在文件打开时读取文件;无需事先关闭文件。另一个进程甚至可以写(用shflag = _SH_DENYNO)。但是,从不同进程同时写入和读取需要更多的编码工作。

   .
  fprintf (fp,"%s\n", data); // you may want to have the /n "new line" after writing the data
   .

并非所有写入的内容总是立即写入文件(物理上)。因此需要强制将内容写入fprintf.

   .
  fflush(fp); // force writing to device    
   .
}
于 2013-10-21T07:14:04.713 回答