c语言两个数组拼接函数 c语言两个数组拼接函数是什么

请问如何使用C语言把两个数组合并在一个数组里?代码文本c语言两个数组拼接函数:
#include "stdio.h"
int input(int *p,int n){
char i,ch;
for(i=0;in;i++){
if((ch=getchar())=='\n')
break;
else if(ch='0'ch='9')
ungetc(ch,stdin);
scanf("%d",p+i);
}
return i;
}
int main(int argc,char *argv[]){
int a[21],b[10],i,j,k;
printf("Input array a...\n");
i=input(a,10);
printf("and input array b...\n");
j=input(b,10);
for(k=0;kj;a[i++]=b[k++]);
for(j=0;ji;printf("%d ",a[j++]));
putchar('\n');
return 0;
}
将两个数组合并到一个数组并排序的c语言程序编写这里是借用第三个数组 。
原理:先将两个数组复制到第三个数组中 , 然后对第三个数组排序
如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:
char* fun(char *dest, char *str, char *dest)
/*------------------------------函数--------------------------------*/
char* fun(char *str1,char *str2,char *dest) //前提,目标数组能偶容纳两个数组
{
char *tmp=dest;
char *tmp_dest=dest;
if(!dest)
return NULL;
while(*str1)//将str1复制进dest
*tmp++=*str1++;
while(*str2)//将str2复制进dest
*tmp++=*str2++;
tmp_dest--;//
while(*++tmp_dest) //选择排序法
{
char *tmp_px=NULL;
tmp=tmp_dest;
while(*++tmp) //找到后面一串的最值
{
if(*tmp_dest*tmp)
tmp_px=tmp;
}
if(!tmp_px)
{
char ch=*tmp_dest;
*tmp_dest=*tmp_px;
*tmp_px=ch;
}
}
return dest;
}
c语言怎么合并两个数组int main() {
char a[] = "123456";
char b[] = "abcde";
int buflen = strlen(a) + strlen(b);
char *p = (char*)malloc(buflen + 1);
memset(p, 0, buflen);
printf("%d\n", buflen);
strcpy(p, a);
strcat(p, b);
printf("%s\n", p);
free(p);
}
C的数组在创建后不可变得,因此数组合并的思想就是把数组塞到一个足够大的空间里形成新数组 。
上面的函数是比较简单的合并方法
c语言,连接2个数组的方法???首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组 。
用动态数组实现以下核心代码:
int * Link(int *a,int lenA,int *b,int lenB) {
int *p=new[lenA+lenB];//新建一个数组 , 数组大小为两数组总和
int *pp=p;//运算指针
//复制数组不要自己使用循环 , 那样效率很低,应该采用库函数中的memcpy 。
memcpy(pp,a,lenA*sizeof(int));//将数组a复制到新建内存首地址
memcpy(pp+lenA,b,lenB*sizeof(int));//将数组b复制到前数组尾部
//如果需要,释放数组a和b,当然如果是静态分配的数组,下面两句可注释掉
delete []a;
delete []b;
return p;
}
其中sizeof(int)取整型类型的字节宽度,当然你可以直接写4,但是不同编译器不同操作系统int类型的字节宽度可能不同,养成使用sizeof取类型宽度可以使你的代码具有很好的兼容性,减少意外 。
复制后指向会改变,我们还需要将p返回给调用者,因此不可以直接使用p进行复制,需要建一个指针pp,复制p的值,利用pp复制数组 。
pp+lenA可以让pp指向复制后的数组a的尾部 , 在后面的位置复制b数组 。
c语言怎么用strcat将两个数组a[i]、b[j]合并成一个数组?strcat是字符串拼接函数 , 不是数组拼接函数,所以不能用于拼接两个数组 。

推荐阅读