写入文件

时间:2017-11-29 19:57:43

标签: c fwrite

假设我正在写一个文件,但是我想通过关闭机器的电源来结束写操作,那是不是fclose()函数没有被调用的问题?

FILE *f = fopen("file.txt", "w");
if (f == NULL)
{
    printf("Error opening file!\n");
    exit(1);
}

/* print some text */
while(1){
//write something...
}
//Dont want to call this
fclose(f);

1 个答案:

答案 0 :(得分:0)

简短回答:不,如果有任何缓冲,请不要写。如果没有缓冲,也可能没有。

可以使用setvbuf控制缓冲模式。您还可以定期调用fflush来刷新缓冲区。

但是,无论您如何管理缓冲,控制都会转移到OS内核I / O调度,然后转移到硬件(可能有自己的缓冲)。

据我所知,<stdio.h>中的文件I / O例程并没有给你足够低的控制权来绝对确定你的数据是在从{{1}这样的调用返回时写的。 }。

请注意,我在谈论突然意外断电。