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语言编程怎么将一个数组截断成几个数组的主要内容,如果未能解决你的问题,请参考以下文章