我试图用C代码生成大文件(4-8 GB)。 现在我使用fopen()
与'wb'
参数来打开文件二进制和fwrite()
函数在for
循环中将字节写入文件。我在每次循环迭代中写入一个字节。在文件大于或等于4294967296字节(4096 MB)之前没有问题。它看起来像32位操作系统中的一些内存限制,因为当它写入该打开的文件时,它仍然在RAM中。我对吗?症状是创建的文件比我想要的尺寸小。差别是4096MB,例如当我需要6000 MB文件时,它会创建6000 MB - 4096 MB = 1904 MB文件。32位系统上的大文件的fwrite()替代
你能否建议其他方式来完成这项任务?
问候:)
的代码部分:
unsigned long long int number_of_data = (unsigned int)atoi(argv[1])*1024*1024; //MB
char x[1]={atoi(argv[2])};
fp=fopen(strcat(argv[3],".bin"),"wb");
for(i=0;i<number_of_data;i++) {
fwrite(x, sizeof(x[0]), sizeof(x[0]), fp);
}
fclose(fp);
'i'是如何定义的? – willys 2013-05-13 10:28:45
'strcat(argv [3],“。bin”)'wrong – BLUEPIXY 2013-05-13 10:29:16
@willys'i' is definied this way:'unsigned long long int i = 0;' – bLAZ 2013-05-13 10:30:12