c语言连接两个数组的函数 c语言链接两个数组

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语言之指针:连接两个字符数组

程序最最主要的问题在于:你在connect函数中,返回了一个局部变量的地址,即局部变量c。

当你返回这个指针(即局部变量c),你是想返回c这个数组的首地址是吧,确实是这样,返回了这个地址值。但是,千万要注意,当你回到主函数时,事实上那个数组早已经不存在了,已经销毁了,也就是说里面的数据已经不是那个connect函数中我们希望的数据了。在主函数中printf("%s",connect(a,b)); 当然不会得到想要的结果了。不知道你明白了没有*_*

我改进了一下,仅供参考

#include "stdio.h"

//增加了一个参数,即s,用于存放连接后的数组元素

char *connect(char *pa, char *pb, char *s)

{

char *pc = s;

int i=0,j=0;

while(*(pa+i)!='\0')

{

*(pc+i)=*(pa+i);

i++;

}

while(*(pb+j)!='\0')

{

*(pc+i)=*(pb+j);

i++;

j++;

}

return s;

}

int main()

{

char a[10],b[10];

char c[20]; //这个数组不放在connect函数中,而是在这里出现,目的是为下面的调用提供接口

scanf("%s",a);

scanf("%s",b);

printf("%s\n", connect(a, b, c));

return 0;

}

你试试吧,可以正确执行*_*

嘿嘿,对于这个程序呢,connect函数是有可以改进之处的,我又做了一点改进,你要是愿意,可以看一下。

#include "stdio.h"

#include "string.h"

//这个connect函数是不是简单了许多呢*_*

char *connect(char *pa, char *pb, char *s)

{

int n = strlen (pa);

strcpy (s, pa);

strcpy (s+n, pb);

return s;

}

int main()

{

char a[10],b[10];

char c[20];

scanf("%s",a);

scanf("%s",b);

printf("%s\n", connect(a, b, c));

return 0;

}

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语言怎么连接两个一维数组?

先printf输出一个数组的值,不要换行,加上空格后,再输出另一个。


文章名称:c语言连接两个数组的函数 c语言链接两个数组
新闻来源:http://azwzsj.com/article/ddjciie.html