在循环中使用 `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
/等等。叫做。因此它不会在每次迭代时执行系统调用。
我需要编写一个数组,其部分分散在代码中。
简而言之,我的代码是这样的:
(...)
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
/等等。叫做。因此它不会在每次迭代时执行系统调用。