C:EXC\u坏访问错误

C:EXC\u坏访问错误,c,exc-bad-access,C,Exc Bad Access,我试图运行这个程序来提取一些数据,但是我无法让它正常工作,因为我得到了错误:EXC_BAD_ACCESS 以下是发生错误的C程序的一部分: *发生错误的行是- if ( ( iend = oclread() ) == -1 ) printf(" END OF FILE REACHED\n"); 它位于底部 ======================================================================== define maxtax 30 de

我试图运行这个程序来提取一些数据,但是我无法让它正常工作,因为我得到了错误:EXC_BAD_ACCESS

以下是发生错误的C程序的一部分:

*发生错误的行是-

 if ( ( iend = oclread() ) == -1 ) printf(" END OF FILE REACHED\n");
它位于底部

========================================================================

define maxtax 30  
define maxsec 100  
define maxbio 50  
define maxparm 100  
define maxpsec 25 * maxparm  
define idim 360  
define jdim 180  
define kdim 33  
define kdimax 40  
define maxchoice 8

FILE *fp,*fpout,*fplist, *fpwoa;

char cc[2];

int icruise=0, ostation=0, year=0, month=0, day=0;

int hour,longitude,latitude;

int levels,isoor,nparm,ip2[maxparm],iperror[maxparm];  
int htotfig[3],hsigfig[3],hrightfig[3];

int origcfig,origsfig;
char origc[30],origs[30];
int ipip[maxparm],ipi[maxparm],npi;

int nsec;
int stotfig[maxsec],ssigfig[maxsec],srightfig[maxsec];
int seccode[maxsec],secval[maxsec];

int npsec;
int pstotfig[maxpsec],pssigfig[maxpsec],psrightfig[maxpsec];
int psecparm[maxpsec],pseccode[maxpsec],psecval[maxpsec];

int nbio;
int btotfig[maxbio],bsigfig[maxbio],brightfig[maxbio];
int biocode[maxbio],bioval[maxbio];

int ntsets;
int *ntloc,*ntcode,*ntval,*nterr,*ntoerr,*nttotfig,*ntsigfig,*ntrightfig;

int *depth,*zerr,*zoerr,*ztotfig,*zsigfig,*zrightfig;

int *dataval,*derr,*doerr,*dtotfig,*dsigfig,*drightfig;

int isize,zsize;
int ntsetsmax=0, isizemax=0,zsizemax=0;

double tenp[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000,
                  100000000 };

int sdepth[] = { 0, 10, 20, 30, 50, 75, 100, 125, 150, 200, 250,  
                 300, 400, 500, 600, 700, 800, 900, 1000, 1100,  
                 1200, 1300, 1400, 1500, 1750, 2000, 2500, 3000,  
                 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000,  
                 7500, 8000, 8500, 9000 }; 

 char *namevar[] = { "Temp","Sal","Oxy","Phos","dum5","Sil","dum7",  
                     "NO3","pH","dum10","Chl","dum12","dum13","dum14",  
                     "dum15","dum16","Alk","dum18","dum19","pCO2",  
                     "DIC","BAC","dum25","dum26","dum27","dum28",  
                     "dum29","dum30","dum31","dum32","Trit","He",  
                     "dHE3","dC14","dC13","Arg","Neo","CFC11",  
                     "CFC12","CFC113","O18" };  

  main()
  {
      char filename[80];
      int i=0, j, k, s, jchoice, iend=0;
      int ncast=0;

      printf(" Enter input file name\n");
      scanf("%s",filename);

      if ((fp = fopen(filename,"rb+\0")) == NULL)
      printf("UNABLE TO OPEN FILE\n");

      else {

            printf( "Which variable would you like to see:\n");  
            printf( " 1 - Temperature\n");  
            printf( " 2 - Salinity\n");  
            printf( " 3 - Oxygen\n");  
            printf( " 4 - Phosphate\n");  
            printf( " 6 - Silicate\n");  
            printf( " 8 - Nitrate\n");  
            printf( "11 - Chlorophyll\n");  
            printf( "17 - Alkalinity\n");  
            printf( "20 - pCO2\n");  
            printf( "21 - tCO2\n");  
            printf( "24 - BAC\n");  
            printf( "33 - Tritium\n");  
            printf( "34 - Helium\n");  
            printf( "35 - deltaHE3\n");  
            printf( "36 - deltaC14\n");  
            printf( "37 - deltaC13\n");  
            printf( "38 - Argon\n");  
            printf( "39 - Neon\n");  
            printf( "40 - CFC11\n");   
            printf( "41 - CFC12\n");  
            printf( "42 - CFC113\n");  
            printf( "43 - Oxy18\n");  
            scanf("%d",&jchoice);

/********************************************************

 INITIALIZE DYNAMIC ARRAYS

*********************************************************/

            spacer(1);

  /*   GET USER INFORMATION (NUMBER OF CASTS, OUTPUT FILE NAME) */

            printf(" Enter output file name\n");
            scanf("%s",filename);

            if ((fpout = fopen(filename,"w\0")) == NULL) 
               {
                 printf("UNABLE TO OPEN FILE\n");
               }

            printf(" ENTER NUMBER OF CASTS TO VIEW");
            printf (" (0 FOR ALL CASTS IN FILE)\n");
            if ( (s = scanf("%d",&ncast)) == 0 ) ncast=0;

            if ( ncast == 0 ) ncast=100000000;

/********************************************************

ENTER STANDARD LEVEL DEPTHS, IN CASE THIS IS STANDARD LEVEL DATA

********************************************************/

            for ( j = 0; j < 40; j++ ) *(depth+j)= *(sdepth+j);

            printheader(jchoice);

            while ( !feof(fp) && (i++) < ncast ) 
            {
             if ( ( iend = oclread() ) == -1 ) printf(" END OF FILE REACHED\n");

             else printstation(i,jchoice);
            }

      }

} 
定义maxtax 30
定义maxsec 100
定义maxbio 50
定义maxparm 100
定义maxpsec 25*maxparm
定义IDIM360
定义jdim180
定义KDIM33
定义kdimax 40
定义maxchoice 8
文件*fp、*fpout、*fplist、*fpwoa;
char-cc[2];
int-icruise=0,station=0,year=0,month=0,day=0;
整小时,经度,纬度;
int级别、isoor、nparm、ip2[maxparm]、iperror[maxparm];
int-htotfig[3],hsigfig[3],hrightfig[3];
int-origcfig,origsfig;
char-origc[30],origs[30];
int ipip[maxparm]、ipi[maxparm]、npi;
国际nsec;
int-stotfig[maxsec]、ssigfig[maxsec]、srightfig[maxsec];
int seccode[maxsec],secval[maxsec];
国际核动力源;
int pstotfig[maxpsec]、pssiggig[maxpsec]、psrightfig[maxpsec];
int psecparm[maxpsec]、pseccode[maxpsec]、psecval[maxpsec];
国际nbio;
int btotfig[maxbio]、bsigfig[maxbio]、brightfig[maxbio];
int biocode[maxbio],bioval[maxbio];
int-ntset;
int*ntloc、*ntcode、*ntval、*NTER、*nterr、*nttotfig、*ntsigfig、*ntrightfig;
int*depth、*zerr、*zoerr、*ztotfig、*zsigfig、*zrightfig;
int*dataval、*derr、*doerr、*dtotfig、*dsigfig、*drightfig;
int isize,zsize;
int ntsetsmax=0,isizemax=0,zsizemax=0;
双tenp[]={1,10,100,1000,10000,100000,1000000,10000000,
100000000 };
intsdepth[]={0,10,20,30,50,75,100,125,150,200,250,
300, 400, 500, 600, 700, 800, 900, 1000, 1100,  
1200, 1300, 1400, 1500, 1750, 2000, 2500, 3000,  
3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000,  
7500, 8000, 8500, 9000 }; 
char*namevar[]={“温度”、“Sal”、“氧”、“磷”、“dum5”、“Sil”、“dum7”,
“NO3”、“pH”、“dum10”、“Chl”、“dum12”、“dum13”、“dum14”,
“dum15”、“dum16”、“Alk”、“dum18”、“dum19”、“pCO2”,
“DIC”、“BAC”、“dum25”、“dum26”、“dum27”、“dum28”,
“dum29”、“dum30”、“dum31”、“dum32”、“Trit”、“He”,
“dHE3”、“dC14”、“dC13”、“Arg”、“Neo”、“CFC11”,
“CFC12”、“CFC113”、“O18”};
main()
{
字符文件名[80];
int i=0,j,k,s,jchoice,iend=0;
int ncast=0;
printf(“输入输入文件名\n”);
scanf(“%s”,文件名);
if((fp=fopen(文件名,“rb+\0”))==NULL)
printf(“无法打开文件\n”);
否则{
printf(“您希望看到哪个变量:\n”);
printf(“1-温度\n”);
printf(“2-盐度\n”);
printf(“3-氧气”);
printf(“4-磷酸盐”);
printf(“6-硅酸盐”);
printf(“8-硝酸盐”);
printf(“11-叶绿素”);
printf(“17-碱度”);
printf(“20-pCO2\n”);
printf(“21-tCO2\n”);
printf(“24-BAC\n”);
printf(“33-氚”);
printf(“34-氦”);
printf(“35-deltaHE3\n”);
printf(“36-deltaC14\n”);
printf(“37-deltaC13\n”);
printf(“38-氩”);
printf(“39-霓虹灯”);
printf(“40-CFC11\n”);
printf(“41-CFC12\n”);
printf(“42-CFC113\n”);
printf(“43-18\n”);
scanf(“%d”和jchoice);
/********************************************************
初始化动态数组
*********************************************************/
垫片(1);
/*获取用户信息(强制转换数、输出文件名)*/
printf(“输入输出文件名\n”);
scanf(“%s”,文件名);
if((fpout=fopen(文件名,“w\0”))==NULL)
{
printf(“无法打开文件\n”);
}
printf(“输入要查看的强制转换数”);
printf((文件中的所有强制转换为0)\n”);
如果((s=scanf(“%d”,&ncast))==0)ncast=0;
如果(ncast==0)ncast=100000000;
/********************************************************
如果这是标准标高数据,请输入标准标高深度
********************************************************/
对于(j=0;j<40;j++)*(深度+j)=*(深度+j);
打印头(jchoice);
而(!feof(fp)&(i++)
请有人解释一下这个问题,因为我真的需要这样做


谢谢

这与从世界海洋数据库读取数据有关吗

如果是,这里有一个如何使用oclread()的示例:

看起来您需要#包含原型oclread()的头文件,并使用适当的参数调用它,即您创建和设置的
WOD_阅读器*


您当前的代码编译和链接是否没有错误或警告?

是,这与从WOD站点读取数据有关。这是我复制和编译的csvfromwod.c文件,用于将数据从OSC文件类型转换为csv文件。这里是csvfromwod.c文件的链接,该文件编译时没有错误或警告。在运行程序时,当我输入0表示强制转换的数量时,我得到EXC_BAD_访问错误。我不知道如何解决这个问题,以便我可以转换文件。你认为问题是什么?你在使用什么编译器,在什么平台上运行?我只是在使用最新版本的netbeans和mac os lionSorry,我对netbeans或Lion一无所知。你按照指示做了吗