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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程怎么将一个数组截断成几个数组相关的知识,希望对你有一定的参考价值。

比如说4,5,6,7,2,0,65,8,5,3,0,8,5,6,4,1,0,0,78,25,9,
这样一个数组,在前一个元素不为0,紧后一个为0的地方截断,形成几个子数组中

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

#include <stdio.h>
#include <stdlib.h>

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<k;++i)
for (l=0;l<j;++l)
printf("%d\t",a[i][j]);
putchar('\n');

return 0;
参考技术B 不懂什么意思?说清楚点

C++如何将一个字符数组分割成几个数组?

问题的关键是“分割”的标准, 按什么方式分呢?
① 如果固定长度, 则直接分段拷贝即可。
② 如果是按符号分割,比如空格, 逗号什么的, 则即可以循环里面一个个判断字符, 也可以字符串搜索,比如用strrchr、strstr搜索,也可以用strtok按token分割。
③ 按关键字符或字符串,也可以用②中提到的方式先搜索, 后定位,然后分割。

还有这个是纯C呢? 还是C++? 分的具体方法也会天差地别, C++的话, 可以用容器和算法, 比如vector或list, 乃至string来操作,除了C++的标准库外, 甚至可以用第3方库,比如boost等, 还可涉及到正则表达式来提取特征字符串。

所以关键还是: 你想怎样“分割”?
参考技术A 能把问题说得具体点的么?例如:
定义一个字符数组;
char szArray[] = "aaaa bbbb cccc dddd";
你是指的将类似上面的数组分割么?

这个你用strchr就可以操作。

以上是关于C语言编程怎么将一个数组截断成几个数组的主要内容,如果未能解决你的问题,请参考以下文章

在c语言中怎么输入一组数字存储在数组里

C++如何将一个字符数组分割成几个数组?

在C语言中,数组作为参数,是怎样在函数之间传递的啊??

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

C语言中,数组名作为函数参数,属于啥传递,为啥?

c语言中怎样输入多组数据 每组数据个数不确定 每组数据占一行