c语言数组连接两个函数 c语言两数组拼接

c语言怎么将两个正整数连接有二个方法可以实现c语言数组连接两个函数:
方法一c语言数组连接两个函数:直接用strcat函数 c语言数组连接两个函数;
方法二:编程实现strcatc语言数组连接两个函数的功能 ;
参考代码如下:
void main()
{ char s1[80],s2[80];
int i=0,j=0;
【c语言数组连接两个函数 c语言两数组拼接】puts("input two strings:");
gets(s1);
gets(s2);
while(s1[i]!='\0') i;
while(s2[j])!='\0')
s1[i]=s2[j];*/此处本人修改*/
printf("result:%s\n",s1);
}
c语言中,用了strcmp函数连接两个字符串数组a.b后,还需要手动加个'\0'吗不用了
strcat把原字符串添加到目的字符串结尾处(覆盖dest结尾处的'\0')并添加'\0' 。
C语言之指针:连接两个字符数组程序最最主要的问题在于c语言数组连接两个函数:c语言数组连接两个函数你在connect函数中c语言数组连接两个函数 , 返回c语言数组连接两个函数了一个局部变量的地址,即局部变量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语言数组连接问题第一,你可以定义ZZZ[255]为一个全局变量,然后在里面赋值
byte ZZZ[256];
byte zuhe(byte a[], byte b[], byte c[], byte d[])
{
int i;
for (i=0; i128;i)
{
zzz[i]=a[i];
}
for (i=128; i192;i)
{
zzz[i]=b[i-128];
}
for (i=192; i224;i)
{
zzz[i]=c[i-192];
}
for (i=224; i256;i)
{
zzz[i]=d[i-224];
}
}
调用函数返回值,可以返回一个变量 , 可以返回0,和1,但不能返回的是源函数名 。
C语言,不用strcat,设计一个函数,将两个字符数组连接起来(要用指针的办法)#includestdio.h
void lian(char *a,char *b);
void main()
{
char str1[]="hello";
char str2[]="girl";
char *p1=str1,*p2=str2;
lian(p1,p2);
printf("str1 str2:%s\n",p1);
}
void lian(char *a,char *b)
{int i=0;
int j=0;
while(* (a i)!='\0')
{i;}
for(;* (b j)!='\0';i,j)
{* (a i)=* (b j);
* (a i 1)='\0';
}
}
你应该改这样,不过你样会有内存泄露
最好把char *p1=str1,*p2=str2;改为
char *p2=str2;
char p1[100];//给他足够大的空间
strcpy(p1,str1);//把str1赋给p1的指向,还有要加上string.h这个头文件
c语言数组连接两个函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言两数组拼接、c语言数组连接两个函数的信息别忘了在本站进行查找喔 。

    推荐阅读