我一点也不擅长将大块数据写入文件我有一个模拟有这样的结构
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库将为您提供缓冲,并在需要时进行大量的“写入”。