随机数文件处理问题
以下是我编写的程序,suijishu-600600.txt是7.5G大的0-600600之间的随机数时,程序运行不了;但是当suijishu-600600.txt是1.5G大的0-60600之间的随机数时,程序运行的了,请问为什么?谢谢!suijishu-600600.txt是7.5G大的0-600600之间的随机数时,程序运行不了;但是当suijishu-600600.txt是1.5G大的0-60600之间的随机数时,程序运行的了,请问为什么?谢谢!
#include"stdio.h"
#include"stdio.h"
#include"stdlib.h"
#define N 1201200000 //总行数
FILE *str,*date2;
struct motif
{
int shu;
}lead[N];
void main()
{
int i,j,k,sum=0,a=0;
date2=fopen("E:\\suijishu-600600.txt","rt");
str=fopen("E:\\fenbu-result-600600.txt","wt");
for(i=0;i<N;i++)
fscanf(date2,"%d\n",&lead[i].shu); //使用换行读取,不知为何,使用制表符读取时总出错
for(i=1;i<=N;i+=600600) //每x(20)个数一组进行计算
{
for(j=i;j<i+600600;j++) // 每x(20)个数一组进行计算
{
for(k=j;k>i;k--)
if(lead[k].shu<=599&&lead[j].shu==lead[k].shu) //lead[k].shu<=399中的399表示4400按1:10的分界点,这样399前的数字代表目标粒子情况
a++; //如果a>1表明这个数与前面重复了
if(a==1) //a==1之所以行,是因原数与自己比较了,所以有1s
sum++;
a=0; //重新赋值0,否则下次循环会在上次数值之上累加,a将永远不为0
}
if(sum%3==0) //sum%2中分母2表示总洞数/200的值d
fprintf(str,"%d\n",sum/3); //sum/1中分母1表示总洞数/200的值
if(sum%3!=0) //sum%2中分母2表示总洞数/200的值
fprintf(str,"%d\n",1+sum/3); //sum/1中分母1表示总洞数/200的值
printf("%d\t%d\t%d\n",i/600600,i,sum);
sum=0; //重新赋值1,否则下次循环会在上次数值之上累加,sum越来越大
}
}