如何实时将数据写入文件?
我的意思是:程序获取数据并使用fprintf(...)
命令将它们放入文件(我们可以说 out.txt ),然后另一个程序从文件中读取数据( out .txt )并详细阐述它们。
我有这样的流程:
fp=fopen("out.txt","w+");
while(...) {
...
fprintf (fp,"\n %s", data);
}
fclose(fp);
通过该流程,我在关闭文件后将数据存入文件( out.txt )。
有没有办法将数据实时写入文件?
答案 0 :(得分: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
.
}