连接两个数组的函数C语言 连接两个数组的函数c语言怎么写

C语言怎么连接两个一维数组?

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

成都创新互联主营福绵网站建设的网络公司,主营网站建设方案,重庆APP开发,福绵h5微信平台小程序开发搭建,福绵网站营销推广欢迎福绵等地区企业咨询

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语言,不用strcat,设计一个函数,将两个字符数组连接起来(要用指针的办法)?

#includestdio.h

char *mystrcat(char t[],char s[]) {

char *p = s;

char *q = t;

while(*q) ++q;

while(*q++ = *p++);

return t;

}

int main() {

char s[] = "I love C language,";

char t[81] = "So do I.";

printf("连接之前:\ns[] = %s\nt[] = %s\n",s,t);

printf("连接之后:\nt[] = %s\n",mystrcat(s,t));

return 0;

}


分享名称:连接两个数组的函数C语言 连接两个数组的函数c语言怎么写
文章源于:http://pwwzsj.com/article/hgepgp.html