标题:如何定义大的数组
只看楼主
a13780393
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2012-10-6
结帖率:25%
已结贴  问题点数:20 回复次数:5 
如何定义大的数组
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 编辑 ]
搜索更多相关主题的帖子: include number 如何 
2013-01-14 16:17
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
得分:5 
我也不会 , 等待高手中…………

让平淡诉说非凡!
2013-01-14 17:16
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
得分:5 
30Y,。。。。。

我不知道我能否当程序员,但我依然热爱编程!
2013-01-14 18:36
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
数组很大有问题 malloc()可以很大 但超过操作系统许可也或硬件水平 也不行

首先看需求 确实有这种需求的话可能要考虑自己实现了

我记得也有个用文件模拟内存的 硬盘一般很大啦 当然 速度慢很多
2013-01-14 18:53
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
我的文件包含30亿个字符

没看到 那得考虑分次读取了 读一点处理一点
2013-01-14 18:54
冷读者
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2012-10-2
得分:5 
加内存默默
2013-01-14 19:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-396567-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.212441 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved