永久存储C中的数组

时间:2015-03-24 08:10:00

标签: c++ c

假设我用C / C ++编写程序并创建一个特定大小的数组。即使我关闭计算机并稍后访问它,我也希望永久保留它。有没有办法做到这一点?如果是这样,请告诉我,并在保存之后,如何访问它。

3 个答案:

答案 0 :(得分:5)

将数据保存到文件并在程序启动时加载。

答案 1 :(得分:1)

假设您为字符串创建MAX大小的向量:

char * str = (char *) malloc( MAX );

在某些时候,你填写了一些数据:

strcpy( str, "Useful data in the form of a string" );

最后,在程序结束时,将其保存到文件中:

FILE * f = fopen( "data.bin", "wb" );
fwrite( str, 1, MAX, f );
fclose( f );

在下次执行开始时,您要加载它:

char * str = (char *) malloc( MAX );
FILE * f = fopen( "data.bin", "rb" );
fread( str, 1, MAX, f );
fclose( f );

此解决方案有一些缺点:例如,您的数据仅对您保存它的计算机有用。如果您想要可移植性,那么您应该使用文本和XML:http://www.jclark.com/xml/expat.html

希望这有帮助。

答案 2 :(得分:0)

您可以使用内存映射文件并在内存映射文件中使用偏移量来代替指针。您必须在内存映射文件中实现自己的动态块分配管理。

使用偏移量的效率低于指针。但您可以快速加载并保存数据结构。

可以避免使用偏移量而是使用实际指针。为此,在关闭内存映射文件时将指针值保存到内存映射文件。加载内存映射文件时,必须通过将指针的偏移量添加到内存映射文件来调整数据结构中的所有指针。

如果数据结构很小,则可以在文件映射到内存时一次完成。如果数据结构很大,你可以以懒惰的方式完成它,并且只在你第一次访问它时修复struct的指针。