如何将一个大数组存为一个二进制文件?
发布网友
发布时间:2022-04-20 22:23
我来回答
共5个回答
热心网友
时间:2024-02-20 14:54
不行,一般的教学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;
}
热心网友
时间:2024-02-20 14:55
先不说你的能不能够使用哪个函数输出这些文件的,就是光unsigned long int n[14100025]; 这句话使用静态内存分配而言,你的电脑的内存有多大的啊,被这样已分配你还能够顺利的使用你的电脑的吗?????先解决这个问题后在考虑输入与输出的问题的啦,使用printf或者fwrite函数应该可以完成的吧。。。。祝你好运了。。。。。
对,是需要使用wb模式,因为你的那个要求是使用的是二进制的啊!!!
热心网友
时间:2024-02-20 14:55
如果这样呢?
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数据是高位在前还是低位在前?
热心网友
时间:2024-02-20 14:56
动态分配内存可以实现大数组
其实并不需要那么大的数组,可以使用链表代替数组
热心网友
时间:2024-02-20 14:57
最好以一部分,一部分的来。这么大一块内存,实际使用中是不允许这么做的。