C语言编程怎么将一个数组截断成几个数组

2025-03-28 07:49:18
推荐回答(3个)
回答1:

首先,你不知道这个数组可能包含了几个子数组,所以你无法事先申请合适数目的数组来保存数据。
所以必须先动态的申请一段内存,然后挨个扫描现有的数组中的元素,如果不是0,就将它插入到动态数组中去。如果是0的话,再动态的申请一段内存(也就是动态数组),然后再继续扫描,如此往复,直到扫描结束。
你还可以用一个数组将你所申请的内存指针保存起来,并对申请次数计数,这样就可以继续对这些数组进行处理了。

回答2:

将原数组按要求分解成一些“子数组”,保存到二维数组a中。

#include
#include

int main(void)
{
int sd[]={4,5,6,7,2,0,65,8,5,3,0,8,5,6,4,1,0,0,78,25,9,-1}
int **a,i,j=0,k=0,l=0;
a=malloc(sizeof(int *));
a[0]=malloc(sizeof(int));
for (i=0;sd[i]!=-1;++i)
if (sd[i]) {
a[k][j++]=sd[i];
a[k]=realloc(a[k],sizeof(int)*(j+1));
}
else {
++k;
j=0;
a=realloc(a,sizeof(int *)*(k+1));
a[k]=malloc(sizeof(int));
}
for (i=0;i for (l=0;l printf("%d\t",a[i][j]);
putchar('\n');
}
return 0;
}

回答3:

不懂什么意思?说清楚点