c语言字符数组连接函数,c语言数组拼接函数

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语言,字符数组函数

#include stdio.h

/*比较两个字符串*/

/*src、dst相等 return 1*/

/*src比dst短 return -2*/

/*src比dst长 return 2*/

/*src、dst长度一致但不相等 return -1*/

int stringCmp (char *src, char *dst) {  

if (strlen (src)  strlen (dst))

return -2;

else if (strlen (src)  strlen (dst))

return 2;

else {

while (*src  *dst) {

if (*src != *dst)

return -1;

src++;

dst++;

}

return 1;

}

}

/*合并两个字符串*/

void mergeString(char* str1, char* str2, char* merge) {

while (*merge++ = *str1++); /*复制str1并将指针移动到字符串的末尾的下一个位置*/

merge--; /*退到字符串的末尾*/

while (*merge++ = *str2++); /*从末尾(\0)的位置开始将str2拷贝进来*/

*merge = '\0';

}

int main(void) {

char *str1_1="hel",*str1_2="lo", *merge1;

char *str2_1="ness",*str2_2="happy", *merge2;

char *str3_1="hi",*str3_2="hi", *merge3;

char *str4_1="hello",*str4_2="world", *merge4;

puts ("第1组字符串:");

puts (str1_1);

puts (str1_2);

if (stringCmp (str1_1, str1_2) == 1)

puts (str1_1);

else if (stringCmp (str1_1, str1_2) == -2) {

mergeString (str1_2, str1_1, merge1);

puts (merge1);

}

else if (stringCmp (str1_1, str1_2) == 2 || stringCmp (str1_1, str1_2) == -1) {

mergeString (str1_1, str1_2, merge1);

puts (merge1);

}

putchar ('\n');

puts ("======================================================");

putchar ('\n');

puts ("第2组字符串:");

puts (str2_1);

puts (str2_2);

if (stringCmp (str2_1, str2_2) == 1)

puts (str2_1);

else if (stringCmp (str2_1, str2_2) == -2) {

mergeString (str2_2, str2_1, merge2);

puts (merge2);

}

else if (stringCmp (str2_1, str2_2) == 2 || stringCmp (str2_1, str2_2) == -1) {

mergeString (str2_1, str2_2, merge2);

puts (merge2);

}

putchar ('\n');

puts ("======================================================");

putchar ('\n');

puts ("第3组字符串:");

puts (str3_1);

puts (str3_2);

if (stringCmp (str3_1, str3_2) == 1)

puts (str3_1);

else if (stringCmp (str3_1, str3_2) == -2) {

mergeString (str3_2, str3_1, merge3);

puts (merge3);

}

else if (stringCmp (str3_1, str3_2) == 2 || stringCmp (str3_1, str3_2) == -1) {

mergeString (str3_1, str3_2, merge3);

puts (merge3);

}

putchar ('\n');

puts ("======================================================");

putchar ('\n');

puts ("第4组字符串:");

puts (str4_1);

puts (str4_2);

if (stringCmp (str4_1, str4_2) == 1)

puts (str4_1);

else if (stringCmp (str4_1, str4_2) == -2) {

mergeString (str4_2, str4_1, merge4);

puts (merge4);

}

else if (stringCmp (str4_1, str4_2) == 2 || stringCmp (str4_1, str4_2) == -1) {

mergeString (str4_1, str4_2, merge4);

puts (merge4);

}

putchar ('\n');

puts ("======================================================");

putchar ('\n');

getch (); /*屏幕暂留*/

return 0;

}

运行结果

C语言字符数组连接问题

str1和str2都是99个字节,如果str1内字符串的长度比较大,连接str2就会出现超出str1长度的可能,也就是溢出。可以把str1的长度定义大一些。另外,for(i=0,j=-n;i99,j99;i++,j++),这一句写得不好,i99,j99等价于直接写成j99。

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语言编程,利用函数把字符数组b,连接到字符数组a的后面,并返回字符数组a中新的长度。

题目要连接是“字符数组”而非“字符串”。如下代码可以实现:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

int Connect_a_b(char *a,int la,const char *b,int lb){

a+=la,la+=lb;

while(*a++=*b++,lb--);

return la;

}

int main(void){

char s1[50]="Moonlight is in fr",*s2="ont of my bed.";

int i,ln=Connect_a_b(s1,18,s2,14);

for(i=0;iln;printf("%c",s1[i++]));

printf("\nNew length is %d\n",ln);

return 0;

}

编写一个函数实现两个字符串的连接(不使用库函数strcat).这个用C语言怎么写程序啊求详细解释~急!

void fun (char s1[],char s2[]){

int i,j;

for (i=0;s1[i] !=’\0’; i++); /*求出的i为pA字符的总长度,包括结束标记位*/

for (j=0;s2[j] !=’\0’; j++)

s1[i++]=s2[j]; /*将pB字符串连在pA字符串的后面*/

s1[i]='\0’; /*在字符串最后加上结束标记符*/

}

扩展资料:

最常用的字符串函数:

字符串输出函数puts格式:puts (字符数组名) 功能:把字符数组中的字符串输出到显示器。

2.字符串输入函数gets格式:gets (字符数组名) 功能:从标准输入设备键盘上输入一个字符串。本函数得到一个函数值,即为该字符数组的首地址。

3.字符串连接函数strcat格式:strcat (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“”。

4.字符串拷贝函数strcpy格式:strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。

5.字符串比较函数strcmp格式:strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

6.测字符串长度函数strlen格式:strlen(字符数组名) 功能:测字符串的实际长度(不含字符串结束标志‘’) 并作为函数返回值。

参考资料:

百度百科-数组


标题名称:c语言字符数组连接函数,c语言数组拼接函数
本文路径:http://cdiso.cn/article/hocgoj.html

其他资讯