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

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

luwen



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

5come5帮你背单词 [ excuse /iks'kju:z, iks'kju:s/ vt. 原谅,宽恕,免除(某人的)责任;借口,理由 ]


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

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帮你背单词 [ end /end/ n. 端,尖,终点;v. 目的,目标;终止,结束 ]


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





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

5come5帮你背单词 [ offend /ə'fend/ vt. 冒犯,触怒,使不悦 ]


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



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

5come5帮你背单词 [ grind /graind/ v. 磨,碾碎 ]


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



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

5come5帮你背单词 [ monument /'monjumənt/ n. 纪念物,纪念碑,纪念馆,遗迹 ]


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



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

5come5帮你背单词 [ witness /'witnis/ n. 目击者,证人;vt. 目击,注意到,证明 ]


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



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

5come5帮你背单词 [ grandson /'grændsΛ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帮你背单词 [ customer /'kΛstəmə/ 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帮你背单词 [ upward /'Λpwəd/ ad. 向上,在更高处,…以上 ]


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





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

5come5帮你背单词 [ wealthy /'welθi/ 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帮你背单词 [ compute /kəm'pju:t/ vt. 计算,估计 ]


还有一个问题哈。

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帮你背单词 [ antarctica /æn'ta:ktikə/ 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.009487(s) query 5, Time now is:11-23 08:39, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号