- 论坛徽章:
- 0
|
描述:处理一个很大的文本文件,2.5G左右,文件行数超过40,000,000,其内容为大约6万个(也可能更多,因为可能随时增加)点位每5分钟的信息,其中可能还存在重复数据,现需按点位及时间顺序将其中的数据写入到单点位文件中,也就是说大约有6万个文件。代码能运行,但在处理到第253个点位时出现“不能建立文件”的错误后程序退出,其代码与运行结果如下。另外,目前采用的方法是建立或以追加方式打开某点位文件后直到2.5G的数据处理完毕才关闭,想请教在这样文件数特别多的情况下该如何提高程序效率?由于点位数很多,C能建立或打开的最大文件数是多少?
相关代码如下:
char **strOutNameReg2;
FILE *fp_OutReg2[71680];
strOutNameReg2=(char **)malloc(71680*sizeof(char *));
for(i=0;i<71680;i++)
{strOutNameReg2[i]=(char * )malloc(256*sizeof(char));
}
strcat(strOutNameReg2[i],"_AllElements.txt");
printf("strOutNameReg2[%4d]= %s iStnNumReg2= %4d\n",i,strOutNameReg2[i],iStnNumReg2);
if((fp_OutReg2[i]=fopen(strOutNameReg2[i],"w+")) == NULL)
{printf("不能建立文件: %s.\n",strOutNameReg2[i]);
exit(12);
}
输出结果:
strOutNameReg2[ 249]= E:\DataOut\Out_Reg\S6833_AllElements.txt iStnNumReg2= 250
strOutNameReg2[ 250]= E:\DataOut\Out_Reg\S6834_AllElements.txt iStnNumReg2= 251
strOutNameReg2[ 251]= E:\DataOut\Out_Reg\S6835_AllElements.txt iStnNumReg2= 252
strOutNameReg2[ 252]= E:\DataOut\Out_Reg\S4051_AllElements.txt iStnNumReg2= 253
不能建立文件: E:\DataOut\Out_Reg\S4051_AllElements.txt. |
|