我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 这个错误是因为什么?[已解决] 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ discharge /dis'ta:d3ə/ v. & n. 排出,放出,允许…离开,释放,放电 ]


这个错误是因为什么?[已解决]

Copy code
#include<stdio.h>
#include<stdlib.h>
void main()
{
    FILE *fp;
    char ch;
    long int i;
    long int A[1000000],T[1000000],C[1000000],G[1000000];
      float H[1000000];
    i=0;
   
    for(i=1;i<=1000000;i++)
    {
        A[i]=0;
        T[i]=0;
        C[i]=0;
        G[i]=0;
        H[i]=0;
    }

    if((fp=fopen("c:\\abc.fna","rb"))==NULL)
    {
        printf("can not open the file!\n");
            exit(0);
    }
   
    i=0;
    while(!feof(fp))
    {
        ch=fgetc(fp);
       
        switch(ch)
        {
        case 'A' : i++;
                    A[i]=A[i-1]+1;
                    T[i]=T[i-1];
                    C[i]=C[i-1];
                    G[i]=G[i-1];
                    break;
        case 'T' : i++;
                    A[i]=A[i-1];
                    T[i]=T[i-1]+1;
                    C[i]=C[i-1];
                    G[i]=G[i-1];
                    break;
        case 'C' : i++;
            A[i]=A[i-1];
            T[i]=T[i-1];
            G[i]=G[i-1];
            C[i]=C[i-1]+1;
            break;
        case 'G' : i++;
            A[i]=A[i-1];
            T[i]=T[i-1];
            C[i]=C[i-1];
            G[i]=G[i-1]+1;
            break;
        }
    }

   

for(i=1;i<1000000;i++)
{
    H[i]=((float)C[i]-(float)G[i])/((float)C[i]+(float)G[i]);
}
i=1;

while(H[i]!=0)
{
    printf("%d\t%f\n",i,H[i]);
}

   
    fclose(fp);
   
}

上面的程序出现
Quote:
0x004117a7 处未处理的异常: 0xC00000FD: Stack overflow

是内存不够?还是其他原因?


[ 此贴被luwen在2007-08-31 20:49重新编辑 ]
顶端 Posted: 2007-08-27 23:06 | [楼 主]
carwin





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 189
威望: 0
浮云: 1204
在线等级:
注册时间: 2006-09-17
最后登陆: 2014-02-11

5come5帮你背单词 [ enlighten /in'laitn/ vt. 启发,开导 ]


其它错误我没看哈。就一点需要特别注意。应为这是很容易范的一个错误。

long int A[1000000];   
for(i=1;i<=1000000;i++)
{
        A=0;
}


这段代码是有严重瑕疵的,将会导致不可预料的错误。
正确的写法是:
<code>
long A[1000000];//没必要加int
for(int i=0;i<1000000;i++)//循环变量使用时申明
{
.....
}
//c语言的数组是从0开始的!切记!

并且建议使用
memset(A,0,1000000);
来初始化。
顶端 Posted: 2007-08-30 21:40 | [1 楼]
carwin





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 189
威望: 0
浮云: 1204
在线等级:
注册时间: 2006-09-17
最后登陆: 2014-02-11

5come5帮你背单词 [ ordinary /'o:dinəri/ a. 普通的,平常的,平凡的 ]


还有一个问题哈。

i=1;
while(H!=0)
{
    printf("%d\t%f\n",i,H);
}

这是一个典型的死循环,至少应该在while中加个i++噻。
顶端 Posted: 2007-08-30 21:46 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.075633(s) query 6, Time now is:03-07 08:45, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号