关于动态阵列增长的写法?
有一个需求是想要让程式中产生一个动态字符串阵列,而组数能依需求增加,但是写出来的变成,
每次循环就会一直在产生新的动态字符串阵列,
请教要怎么写这一段?
程式很长我只能贴其中一个函式,下面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; }