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

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

luwen



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

5come5帮你背单词 [ honorable /'onərəbl/ a. 可敬的,光荣的 ]


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

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 | [楼 主]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ urban /'ə:bən/ a. 城市的,都市的 ]


以不是你写的程序不停递归
如f() -> g() -> f()
没完没了,就会这样
顶端 Posted: 2007-08-27 23:16 | [1 楼]
albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ spin /spin/ vi. 编织,杜撰,(使)旋转,结网,吐丝 ]


运行时错误,堆栈溢出,估计是LZ不恰当的使用了指针。
顶端 Posted: 2007-08-27 23:16 | [2 楼]
luwen



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

5come5帮你背单词 [ even /'i:vən/ a. 平坦的,平移民的有规律的,对等的,均等的,偶数的;ad. 甚至,更加 ]


自己再顶一下,期待哪位蝈蝈能帮帮忙
顶端 Posted: 2007-08-27 23:47 | [3 楼]
luwen



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

5come5帮你背单词 [ shorthand /'o:thænd/ n. 速写 ]


是一次分配不了那么多空间?
顶端 Posted: 2007-08-28 08:53 | [4 楼]
perfect_刘



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 960
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-11-20
最后登陆: 2009-05-08

5come5帮你背单词 [ anchor /'æŋkə/ n. 锚;vt. 把…固定住,抛锚,泊(船);vi. 固定,抛锚 ]


主程序里面的变量(就是打括号里面的变量)都是在栈上分配的 栈大小默认好像是1M
你可以用静态或者是全局的~
顶端 Posted: 2007-08-29 23:06 | [5 楼]
luwen



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

5come5帮你背单词 [ conviction /kən'vikən/ n. 坚信,定罪,证明有罪 ]


Quote:
引用第5楼perfect_刘于2007-08-29 23:06发表的  :
主程序里面的变量(就是打括号里面的变量)都是在栈上分配的 栈大小默认好像是1M
你可以用静态或者是全局的~

谢谢蝈蝈了,我试一下
顶端 Posted: 2007-08-30 00:12 | [6 楼]
lyly



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 429
威望: 0
浮云: 1136
在线等级:
注册时间: 2005-09-19
最后登陆: 2010-09-06

5come5帮你背单词 [ gallon /'gælən/ n. 加仑(液量单位) ]


Quote:
引用第5楼perfect_刘于2007-08-29 23:06发表的  :
主程序里面的变量(就是打括号里面的变量)都是在栈上分配的 栈大小默认好像是1M
你可以用静态或者是全局的~

应该是这个问题,这么大的数组最好在main函数外面声明.......
顶端 Posted: 2007-08-30 08:45 | [7 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ choose /tu:z/ vt. 挑选,选择 ]


自已跟踪一下吗
顶端 Posted: 2007-08-30 11:04 | [8 楼]
carwin





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

5come5帮你背单词 [ stale /steil/ a. 陈腐的,不新鲜的 ]


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

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 | [9 楼]
carwin





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

5come5帮你背单词 [ tag /tæg/ n. 标签,标牌 ]


还有一个问题哈。

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

这是一个典型的死循环,至少应该在while中加个i++噻。
顶端 Posted: 2007-08-30 21:46 | [10 楼]
luwen



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

5come5帮你背单词 [ fluctuation /flΛktju'eiən/ n. (物价的)波动,涨落,周期性变动,脉动 ]


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

Quote:
引用第9楼carwin于2007-08-30 21:40发表的  :
其它错误我没看哈。就一点需要特别注意。应为这是很容易范的一个错误。

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

谢谢蝈蝈了~~
顶端 Posted: 2007-08-31 20:46 | [11 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.069051(s) query 5, Time now is:11-23 04:01, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号