| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 754 人关注过本帖
标题:求助数组问题
只看楼主 加入收藏
myphenix
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-9-19
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:13 
求助数组问题
我 在main 函数前用了一个宏定义
#define MAXROW 92800
后面定义了一个数组,a[MAXROW],结果运行时出错,请问是怎么回事?是因为数组越界了吗?谢谢!附我的整个程序
#include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #define MAXROW1 927552
#define MAXROW2 625589
 #define MAXCOLUMN 200
 main()
 {
  int j=0,k=0;
  short plateid1[MAXROW1],plateid2[MAXROW2];
  short field1[MAXROW1],field2[MAXROW2];
  int mjd1[MAXROW1],mjd2[MAXROW2];
  double z2[MAXROW2],ra[MAXROW2],dec[MAXROW2],g[MAXROW2];
  float z1[MAXROW1],mediamass[MAXROW1],p97p5[MAXROW1],mode[MAXROW1],avg[MAXROW1];
  char line[MAXCOLUMN];
   FILE *infp1;
   FILE *infp2;
   FILE *outfp;
   outfp=fopen("/end","w");
   if ((infp2=fopen("/data2.txt","r"))==NULL)
   {
   printf("cannot open infile\n");
       return 1;
       }
   while ((fgets(line,MAXCOLUMN,infp2))!= NULL)
  {
       sscanf(line,"%hd %d %hd %lf %lf %lf %lf",&plateid2[j],&mjd2[j],&field2[j],&ra[j],&dec[j],&z2[j],&g[j]);
  // printf("%4d %6d %4d %12f %10.8f %20.16f %20.15f\n",plateid2[j],mjd2[j],field2[j],ra[j],dec[j],z2[j],g[j]);
       j++;

  }

   if ((infp1=fopen("/data1.txt","r"))==NULL)
      {
      printf("cannot open infile\n");
          return 1;
          }
      while ((fgets(line,MAXCOLUMN,infp1))!= NULL)
     {
          sscanf(line,"%hd %d %hd %f %f %f %f %f",&plateid1[k],&mjd1[k],&field1[k],&z1[k],&mediamass[k],&p97p5[k],&mode[k],&avg[k]);
    //  printf("%4d %6d %4d %e %e %e %e %e\n",plateid1[k],mjd1[k],field1[k],z1[k],mediamass[k],p97p5[k],mode[k],avg[k]);
          k++;

     }
      for (j=0;j<MAXROW2;j++)
      {

          for (k=0;k<MAXROW1;k++)
           {

             if (plateid2[j]==plateid1[k]&& mjd2[j]==mjd1[k]&& field2[j]==field1[k])

                   fprintf (outfp,"%4d %6d %4d %4d %6d %4d %e %e %e %e %e %12f %10.8f %20.16f %20.15f\n",plateid1[k],mjd1[k],field1[k],plateid2[j],mjd2[j],field2[j],z1[k],mediamass[k],p97p5[k],mode[k],avg[k],ra[j],dec[j],z2[j],g[j]);

            }
      }
 fclose(infp2);
 fclose(infp1);
 fclose(outfp);
   return 0;
 }

[ 本帖最后由 myphenix 于 2011-2-24 10:10 编辑 ]
搜索更多相关主题的帖子: 函数 include double 
2011-02-23 14:22
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:2 
可能数组太大了,你定义小点

勤能补拙,熟能生巧!
2011-02-23 14:29
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
没有其他的错误的话,可能是过大的原因吧!

   唯实惟新 至诚致志
2011-02-23 15:54
bowenpro
Rank: 2
等 级:论坛游民
帖 子:7
专家分:16
注 册:2011-2-23
收藏
得分:2 
92800个单元是不会大的吧,你可能在访问数组的时候越界了,调试一下看看,祝你好运!
2011-02-23 15:57
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:2 
你应该是越界使用数组下标。
2011-02-23 16:12
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
跟所用编译器有关吧。
root@~ #cat 1.c
程序代码:
#include <stdio.h>
#define maxrow 92800
int main (void) {

        int a[maxrow]={0};
        a[100]=123;
        a[1000]=1234;
        a[10000]=12345;
        printf ("a[100]=%i\na[1000]=%i\na[10000]=%i\n",a[100],a[1000],a[10000]);
        return 0;

}

root@~ #gcc 1.c -o 1
root@~ #./1
a[100]=123
a[1000]=1234
a[10000]=12345
root@~ #
刚学完数组,  有不妥之处,还望大家指点。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-23 17:12
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
#include <stdio.h>
#define maxrow 92800
int main (void)
{

        int a[maxrow]={0};
        a[100]=123;
        a[1000]=1234;
        a[10000]=12345;
        printf ("a[100]=%d\na[1000]=%d\na[10000]=%d\n",a[100],a[1000],a[10000]);
        return 0;

}



   唯实惟新 至诚致志
2011-02-23 17:33
format123
Rank: 2
等 级:论坛游民
帖 子:35
专家分:60
注 册:2010-11-26
收藏
得分:2 
换个32位的编译器就没的问题了
2011-02-23 21:03
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:2 
同编译器与操作系统有关系,有时定义太大数组,操系系统不会批过的。

小代码,大智慧
2011-02-23 21:08
CCFzeroOH
Rank: 2
等 级:论坛游民
帖 子:79
专家分:85
注 册:2009-12-22
收藏
得分:2 
估计是越界了
2011-02-23 22:49
快速回复:求助数组问题
数据加载中...
 
   



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

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