缩小2Darrays的大小并从中删除特定行

我正在写一个C程序,我有两个2d数组说arr1和arr2。 我必须从arr1中删除一个特定的行并将其添加到arr2。 所以我使用realloc动态地将arr2的大小增加1并将该行arr1的内容复制到这个新创建的arr2行。

但我的问题是我无法缩小arr1的大小并使用realloc从中删除该特定行。 任何人都可以帮我解决一个C代码,它可以用来动态缩小2d数组的大小(使用realloc或其他东西)并从中删除一个特定的行(通过使用该行的索引)?

起初我创建了这样的两个矩阵

 a_seq=(float **)malloc(count1*sizeof(float*)); for(i=0;i<count1;i++) a_seq[i]=(float *)malloc(n*sizeof(float)); 

然后我将第二个矩阵的大小增加了1,然后在第二个矩阵上执行了realloc

 a_full=(float **)realloc(a_full,count2*sizeof(float *)); a_full[count2-1]=(float *)malloc(n*sizeof(float)); for(s=0;s<n;s++) a_full[count2-1][s]=a_seq[p][s]; 

p是要从a_seq中删除的行的索引。我的问题是,我可以应用相同的realloc概念来缩小a_seq矩阵的大小并删除指定的行吗?

我假设你将以下面的forms为你的2d数组分配内存:

 int * arr = malloc(sizeof(int)*r*c); 

相反,如果您逐行分配内存,则删除行的问题会简化。

 int * arr[r]; /*Declaring an array of pointers*/ /*Allocating memory row by row*/ for(i=0; i 

这样,您只能从指针数组分配中留下额外的指针。 您要删除的行将被成功删除。