c - 在循环中使用 `fwrite` 是好习惯吗?

标签 c fwrite stdio

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

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

(...)
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/等。叫做。因此它不会在每次迭代时执行系统调用。

关于c - 在循环中使用 `fwrite` 是好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852625/

相关文章:

对函数 shutdown(fd, options) 的行为感到困惑

c - 可靠地计算磁盘已满时 fwrite 写入的字节数

python - 如何在python中不带括号地写入文件

c++ - 将空指针传递给 fwrite 会导致问题

c++ - Visual Studio 15 __imp___iob,__imp___pctype,__imp___mb_cur_max

c - 限制套接字并发连接数

c - 如何使用 malloc 从函数返回 char 数组

c - fork() 如何停止创建子进程?

c - 格式字符串中的空格 (scanf)

compiler-errors - C++ scanf 未在此范围内声明