如何将一个大数组存为一个二进制文件?

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:34:04
该数组是:
unsigned long int n[14100025];
一千四百多万个数,
每个数长4字节,文件长达56M多。
不需要把变量名等信息存盘。
最好写详细些,包括如何打开。
现在一台电脑有200多兆内存是很平常的啊。56兆应该不成问题吧?
实际上也确实不成问题。因为我编译运行成功下列程序:
# include <stdio.h>
unsigned long int n[14100025];
unsigned long int m;
void main()
{
for(m=1;m<14100024;m++)
n[m]++;
for(m=14099900;m<14100025;++m)
printf(" %d%d",m,n[m]);
getchar();
}

这样行吗?:
ptr=fopen("c:\\ck.dat","w");
fwrite(n, 4, 14100025, ptr);
其中的打开模式"w"是否应该改为"wb"?

不行,一般的教学C语言 比如是 tc2 broland C++ 4.0-
不支持1M 以上的内存,

用windows下面的 c++ 吧,我用的vc2008 呵呵(从5.0用到现在有感情了)

下面是例子
#include "windows.h"
#include "Winbase.h"
int _tmain(int argc, _TCHAR* argv[])
{
int *lpMem = (int *) VirtualAlloc(NULL,sizeof(int)*14100025,MEM_COMMIT,PAGE_READWRITE);
if(lpMem!=NULL)
{
//在这里
for(int c = 0 ; c<14100025; c++ )
{
lpMem[c] = c;

}

VirtualFree(lpMem,sizeof(int)*14100025,MEM_RELEASE);

}

printf("-------------------");
return 0;

}

如果这样呢?
int i,j;
FILE *out;
out = fopen("aaa.xxx","wb");
for(i=0; i<14100025; i++)
for(j=0; j<4; j++){
fputc(n[i]>>24,out)
n[i]=n[i]<<4;}
我只是大概写一下方法,LZ还得弄明白你的文件是以什么样的格式存放的,也就是说对于每一个long int数据是高位在前还是低位在前?

先不说你的能不能够使用哪个函数输出这些文件的,就是光unsigned long int n[14100025]