首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

动态数组有两组丢失了,该如何处理

2012-03-20 
动态数组有两组丢失了我的代码是这样的int _tmain(int argc, _TCHAR* argv[]){FILE *fp1,*fp2int num0,n

动态数组有两组丢失了
我的代码是这样的
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp1,*fp2;
int num=0,numi=0,numj=0,i=0,j=0,n=0,q=0;
double pi,pj,**etai,**etaj;
int ch,p=1;
errno_t err;
if((err=fopen_s(&fp1,"idata.txt","r"))!=NULL)
printf("Can not open file idata.dat!");
else
{
ch=fgetc(fp1);
  rewind(fp1);
fscanf(fp1,"%d %d",&numi,&numj);
num=numi*numj;
printf("%d %d\n",numi,numj);
etai=(double**)malloc(numi);
for(i=0;i<numi;i++)
etai[i]=(double*)malloc(numj);
etaj=(double**)malloc(numi);
for(i=0;i<numi;i++)
etaj[i]=(double*)malloc(numj);
i=0;
j=0;
while(ch!=EOF)
{
fscanf(fp1,"%lf%lf",&pi,&pj);
etai[i][j]=pi;
etaj[i][j]=pj;
ch=fgetc(fp1);
printf("%.9f %.9f %d %d\n",etai[i][j],etaj[i][j],i,j);
if(i==numi-1&&j==numj-1)
break;
n=n+1;
while(ch!='\n'&&ch!=EOF)
ch=fgetc(fp1);
if(i<numi-1)
i=i+1;
else
{
i=0;
j=j+1;
}
}
for(i=numi-1;i>=0;i--)
{
for(j=numi-1;j>=0;j--)
printf("%.9f %.9f %d %d\n",etai[i][j],etaj[i][j],i,j);
}
}
}
运行以后发现前面的printf的etai,etaj都没问题
但是最后一个printf发现i=0和i=1两组数据没有,程序出错,是什么原因?
 

[解决办法]
二维数组的申请不对,malloc里面的个数默认以字节为单位。

C/C++ code
etai=(double**)malloc( sizeof(double*)*numi );for(i=0;i<numi;i++)  etai[i]=(double*)malloc(numj * sizeof(double) ); 

热点排行