如何定义大的数组
sequence.zip
(11.65 KB)
static char s[3455641349];我的文件包含30亿个字符,系统显示数过大,超出内存,怎么定义啊?这是原代码,#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<math.h>
#define N 256
struct motif
{
char name[20];
float number;
} lead[N];
void main()
{
/////计算TATA 保守性
FILE *in,*out;
in=fopen("sequence.txt","r");
out=fopen("结果.txt","w");
static char s[3455641349];
char c[4]={'a','g','c','t'};
int i=0,j=0,k=0,l=0,m=0,number=0;
int person=0;
float words=0;
float expect=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(l=0;l<4;l++)
for(m=0;m<4;m++)
{
lead[number].name[0]=c[i];
lead[number].name[1]=c[j];
lead[number].name[2]=c[l];
lead[number].name[3]=c[m];
number++;
}
while(!feof(in))
{
fgets(s,3455641349,in);
if(s[0]=='@') break;
for(i=0;i<3455641348;i++)
{
for(j=0;j<4;j++)
for(k=0;k<4;k++)
for(l=0;l<4;l++)
for(m=0;m<4;m++)
{
if(s[i]==c[j]&&s[i+1]==c[k]&&s[i+2]==c[l]&&s[i+3]==c[m]&&s[i+4])
lead[person].number++;
person++;
}
person=0;
words++;
}
for(i=0;i<3455641348;i++)
s[i]=' ';
}
for(k=0;k<N;k++)
fprintf(out,"%s\t%f\t\n",lead[k].name,lead[k].number);
fclose(out);
}
[ 本帖最后由 a13780393 于 2013-1-14 19:54 编辑 ]