在循环中使用 `fwrite` 是一种好习惯吗?

Is it good practice to use `fwrite` within loops?

我需要编写一个数组,其部分分散在代码中。

简而言之,我的代码是这样的:

(...)
FILE *f = fopen(filepath, "wb"); // wb -write binary

for (uint i = 0; i < num_points; i++) {
    fwrite(points[i].loc, sizeof(float[3]), 1, f);
}

fclose(f);

如您所见,我的解决方案是在文件前面写入数组的每个新部分。

但是这样会不会有效率问题,或者内存读取问题?我应该在 RAM 中分配整个数组然后写入文件吗?

fwrite 将缓冲您的数据,直到其缓冲区已满,或 fflush/fclose/等等。叫做。因此它不会在每次迭代时执行系统调用。