我一点也不擅长将大块数据写入文件我有一个模拟有这样的结构

typedef struct
{
   int age;
   float height;
   float weight;
   int friends [ 250000 ];
} Person;

我可以有多达25万人,每个人有25万朋友(一个集团)很明显这是大量的数据如果我想保存每个结构以便以后加载它们,那么C中最有效的方法是什么这是我到目前为止所考虑的
我不想创建一个包含250000组数据的大字符串,然后只做一个write,因为这将占用大量内存
我也不想创建250000个不同的文件,因为这样做可能会很慢。
基于索引追加文件(即person 1,然后person 2…),但这可能也很慢。
将数据保存为二进制(这更有效吗?)
编辑我正在寻找使用fwrite ()的有效方法,即收集所有数据并写入单个文件是否更快,或者是否创建多个文件并避免手动收集所有数据的开销。

最佳答案

你可以把人圈起来,只需存储年龄、身高和体重(3个fwrites),然后一个朋友计数,然后把朋友圈起来,一个一个地写下来所有这些都和fwrite有关您不需要关心优化I/O,因为C库将为您提供缓冲,并在需要时进行大量的“写入”。

08-05 12:55