关于动态阵列增长的写法?
有一个需求是想要让程式中产生一个动态字符串阵列,而组数能依需求增加,但是写出来的变成,
每次循环就会一直在产生新的动态字符串阵列,
请教要怎么写这一段?
程式很长我只能贴其中一个函式,下面mark掉的部分是新加入需要改的.
说简单一点就是要做像VB6的ReDim Preserve那种功能.
程序代码:
char ***CheckCood(int mode,char **ptr)
{
int i=0,j=0,x_Max=0,y_Max=0,x_Min=0,y_Min=0;
int New_x_Max=0,New_y_Max=0,New_x_Min=0,New_y_Min=0;
int nCount=STD.Total_parts_tested,k=0;
if (mode==0)
{
for (i=0;i<nCount;i++)
{
if(i==0)
{
x_Max=CD[i].x;x_Min=CD[i].x;
y_Max=CD[i].y;y_Min=CD[i].y;
}
else
{
if ((CD[i].x>x_Max) || (CD[i].y>y_Max))
{
if (CD[i].x>x_Max)
x_Max=CD[i].x;
if (CD[i].y>y_Max)
y_Max=CD[i].y;
}
else if ((CD[i].x<x_Min) || (CD[i].y<y_Min))
{
if (CD[i].x<x_Min)
x_Min=CD[i].x;
if (CD[i].y<y_Min)
y_Min=CD[i].y;
}
}
}
New_x_Max=((x_Max/10)+1)*10;New_x_Min=((x_Min/10)-1)*10;
New_y_Max=((y_Max/10)+1)*10;New_y_Min=((y_Min/10)-1)*10;
My_Max_x=New_x_Max;My_Min_x=New_x_Min;
My_Max_y=New_y_Max;My_Min_y=New_y_Min;
if ((x_Min<0)||(y_Min<0))
ErrorCoord=-1;
else
ErrorCoord=0;
}
char ***NewCood = NULL;
NewCood = (char***)malloc(sizeof(char**)*My_Max_x);
for(i=0;i<=My_Max_x;i++)
{
NewCood[i] = (char**)malloc(sizeof(char*)*My_Max_y);
for(j=0;j<=My_Max_y;j++)
NewCood[i][j] = (char*)malloc(sizeof(char)*2);
}
for(i=0;i<=My_Max_x;i++)
{
for(j=0;j<=My_Max_y;j++)
{
for(k=0;k<3;k++)
NewCood[i][j][k]='0';
NewCood[i][j][k]='\0';
}
}
if (mode>0)
{
STD.parts_retested=0;
for(i=0;i<nCount;i++)
{
char tmp1[2]={0};
if(mode==1)
itoa(CD[i].hw,tmp1,10);
if(mode==2)
itoa(CD[i].sw,tmp1,10);
if (strcmp(NewCood[CD[i].x][CD[i].y],tmp1)==0)
{
if(mode==2)
{
/*-------------------------------------------------------------------------------------------------
ptr = (char**)malloc(sizeof(char*)*STD.parts_retested);
ptr[STD.parts_retested] = (char*)malloc(sizeof(char)*20);
sprintf(ptr[STD.parts_retested],"%d,%d,%d,%d,%d",CD[i].x,CD[i].y,CD[i].sn,CD[i].hw,CD[i].sw);
------------------------------------------------------------------------------------------------*/
}
STD.parts_retested++;
}
strcpy(NewCood[CD[i].x][CD[i].y],tmp1) ;
}
return NewCood;
}
return 0;
}




