C语言中怎样设计一个函数实现两个字符串的连接

作者&投稿:仍变 (若有异议请与网页底部的电邮联系)
用C语言编程:编写一个函数,将两个字符串连接起来~

1、新建一个工程和.c文件,输入头文件和主函数。

2、定义变量类型。

3、调用cpy函数。

4、定义一个函数,并定义变量类型。

5、用一个For 语句和if语句判断是否为元音。

6、最后加一个字符串结束符,并在主函数中输出。

7、编译。运行。

1、实际上就是实现strcat这个字符串库函数,在vc自带的crt源码或者linux平台的glibc库中都有strcat的源码,自己可以查阅参考,看看库开发者是如何写代码的,对于学习C语言非常有用。
2、示例
#include

char *strcat(char *str1, char *str2)
{
if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!";
char *pt = str1;
while(*str1!='\0') str1++;
while(*str2!='\0') *str1++ = *str2++;
*str1 = '\0';
return pt;
}

int main()
{
char a[]= "markyuan";
char b[]= "yyyyy";
char *cat = strcat(a,b);
printf("%s
",cat);
return 0;
}

1)简单来,直接用 strcat 函数,需要包含头文件 string.h

2)自己实现的话也不麻烦,但是要考虑一些细节:
假设两个字符串指针为 str1,str2 ,现在要讲 str1 和 str2 连接成一个新的字符串。
a.考虑指针 str1,str2 是否非空
b.如果将str2的内容直接连接到str1的末尾,要考虑str1是否有足够的剩余空间来放置连接上的str2的内容。
如果用一个新的内存空间来保存str1和str2的连接结果,需要动态分配内存空间。

这个你可以定义两个字符数组。把那些需要合并的字符分别放在两个字符数组里。strcat函数将两个数组合并。例如 char arr1[10]="k", char arr2[2]="OM"; 用strcat(arr1,arr2);后面的就合并到arr1.

char * strcat(char *s, const char *append)
{
//将s所指向的字符串的首地址保存下来,以便使用
char *save = s;
//将s所指向的字符串的首指针移至串尾处,s指针指向的字符元素为'\0'
for (; *s; ++s);
//将append所指的字符串的元素复制到s所指向的字符串尾部,直至遇到'\0'
while ((*s++ = *append++) != '\0');
//返回追加后的字符串首地址
return(save);
}

#include "Stdio.h"
void cac(char s1[100],char s2[100])
{
int i=0,j=0;
while(s1[i]) i++ ;
i--;
while(s2[j])
s1[i++]=s2[j++];
s1[i]='\0';
}

int main(void)
{
char c1[100]={'\0'};
char c2[100]={'\0'};

printf("input c1:");
gets(c1);
printf("input c2:");
gets(c2);

cac(c1,c2);

puts(c1);

}

void __strcat(char *str1, const char *str2)
{
ASSERT(str1!=NULL);
int nLen = strlen(str1);
char *p = str1+nLen;
while( ( *p++ = *str2++) != '\0');
}


设计一个C语言的程序能实现输入两个正整数m,n能求出其最大公约数和最...
include <stdio.h> void main(){ int a,b,c,d,e,f,g;printf("请输入两个正整数:");scanf("%d%d",&a,&b);f=a;g=b;if(a

c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址
c语言程序设计——编一个通讯录管理程序:序号姓名电话地址可显示已录入的通讯录实现新纪录的录入可以删除、修改任何一条记录可以根据姓名、电话、或地址查询相关信息系统的退出嗯,邮... c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址可显示已录入的通讯录实现新纪录的录入可以删除、修改任何一条记录...

C语言,一个简单的二维数组程序设计.大虾来帮帮忙啊...
\/* 对矩阵的每一行进行排序(简单选择排序算法,非递减排列),结果存储在另一个矩阵中 *\/ void Sort(int A[4][4], int B[4][4]){ int row, i, j, k;int temp;for(i=0; i<4; i++)for(j=0; j<4; j++){ B[i][j] = A[i][j];} for(row=0; row<4; row++){ for...

程序设计语言中用来组织语句生成一个程序的规则称为
程序设计语言是用于书写计算机程序的语言,语言的基础是一组记号和一组规则,根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。程序设计语言中用来组织语句生成一个程序的规则称为语法,语法表示程序的结构或形式,亦即...

易语言问题 设计一个猜密码的小程序,密码是1到9的的三位数密码,最终猜...
.版本 2 .子程序 _按钮1_被单击 .局部变量 x, 整数型 .局部变量 z, 整数型 .局部变量 y, 整数型 .计次循环首 (9, x).计次循环首 (9, y).计次循环首 (9, z)编辑框1.内容 = 编辑框1.内容 + 到文本 (x) + 到文本 (y) + 到文本 (z) + #换行符 编辑框1.起始选择...

请问把一个数据循环输出n遍(比如5遍)用C语言应该怎样设计程序?
很多种做法的, 譬如要输出5次abcdef 1)while int i = 0;while(i < 5){ printf("abcdef");i++;} 2) for int i;for(i = 0; i < 5; i++){ printf("abcdef");} 3) do --while int i = 0;do{ printf("abcdef");i++;} while ( i < 5);...

设计一个C语言程序;输入整数x,如果x是正数,输出x的平方;如果x是负数...
int x;scanf("%d",&x);if(x>0)printf("%d",x*x);else if(x<0)printf("%d",-2*x);

如何设计幼儿语言教育活动目标
任何一个语言教育活动,你可从以上这个框架出发去拟订活动目标。虽然说,我们拟定活动目标时,可以根据上面的框架来制定,但这并不意味,每次活动都必须实现上表中四个方向的十二小点的所有目标,而且这也是不可能完成的。在活动目标的设计中,我们要考虑幼儿的年龄特点、已有经验等,现在进行的主题目标、...

使用java语言设计并实现一个应用程序,模拟一台简易的赌博机,该机器从0...
唯一的技术点Math.random(); 使用(int) (Math.random() * 9) 就可以得到0-9之间的整数了 望采纳

c语言模块化程序设计是将一个大的任务分解成若干个小任务吗?
选A。一个C程序由一个主函数和若干个其他函数组成。若干个的意思就是可以有0个及以上个。c语言的程序模块称为函数。模块化程序设计是将一个大的任务分解成若干个小任务,再将小任务分解成更小的任务,直到每一个任务都只完成一个独立功能。这样的每个任务都叫做模块,c语言中模块是用函数来实现。

精河县18051616059: c语言 写一个函数能将两个字符串连接,在主函数中调用 -
微屠欣路: 这样就可以了,我已经在vc6通过调试运行了,不过要注意一点哦,虽然c语言里面没有string类型的变量,但是在c++里面有,所以为了防止不必要的麻烦,你这里的变量名字最好不要用string#include<stdio.h> void stringcat(char str1[],char str2[],...

精河县18051616059: C语言程序设计:写出实现两个字符连接的函数(不用STRCAT)
微屠欣路: #include <stdio.h> void mystrcat(char *s1,char *s2) { for(;*s1;s1++); for(;*s2;*s1++=*s2++); *s1='\0'; } void main() { char s1[100],s2[100]; printf("输入字符串1:"); gets(s1); printf("输入字符串2:"); gets(s2); mystrcat(s1,s2); printf("连接后的字符串:%s",s1); } VC下通过.

精河县18051616059: 用C语言写出一函数,将两个字符串连接,该怎么写 -
微屠欣路: void concat(char *s1, int size1, char *s2, int size2, char *sout) {int i;for (i = 0; i < size1; ++i)sout[i] = s1[i];for (i = 0; i < size2; ++i)sout[i + size1] = s2[i];sout[i] = '\0'; } 示例使用方法: char *s1 = "ABCD"; char *s2 = "12345"; char sout[100];...

精河县18051616059: c语言 设计函数 连接两个字符串 -
微屠欣路: /*! \brief 连接两个字符串 * \param dst 字符串dst地址,也是连接后字符串的存储地址 * \param src 字符串2地址 * \note 必须保证dst剩余的空间能容纳字符串src,否则,调用结果未定义 */#include void join_string(char *dst,const char *src) { int src_...

精河县18051616059: C语言编写一个无返回值函数copy(),它以两个字符型为形式参数, -
微屠欣路: void copy(char *str, int strLength, char *strFrom) { int i; for(i = 0; i{ if(strFrom[i] != '\0') { str[i] = strFrom[i]; } else { if(i{ str[i+1] = '\0'; } } } }

精河县18051616059: 在C语言编程中,如何利用调用函数来把两个字符串连接起来? -
微屠欣路: strcat(a,b)把字符串b连到字符串a后面 举例; strcat("wo","niu");//输出woniu

精河县18051616059: 编写一个函数实现两个字符串的连接(不使用库函数strcat).这个用C语言怎么写程序啊求详细解释~急! -
微屠欣路: #include void main() { char s1[20],s2[10]; int i=0,j=0; gets (s1),gets (s2); while (s1[i] !='\0') { i++; } while (s2[j] != '\0') {s1[i++]=s2[j++];} puts (s1); }

精河县18051616059: c语言编程,使用指针做为函数参数,编写一个字符串交换函数,实现两个字符串内容的交换 急求,多谢! -
微屠欣路: #include void swap(char *a, char *b){int ch;while(*a && *b)ch=*a,*a=*b,*b=ch,a++,b++;if(*a){ zd*b++=*a,*a++='\0';while(*b++=*a++);}else if(*b){*a++=*b,*b++='\0';while(*a++=*b++);} }

精河县18051616059: 编写一个函数,将两个字符串连接起来.C语言题目 急急急!!!!!!!!!!在线等麻烦写完整的,我用的是win - tc. -
微屠欣路: char *concat(char *source,char *destin) { while(*source); do{ *source++=*destin; }while(*destin++); }

精河县18051616059: 用C语言:写一个函数,将两个字符串连接
微屠欣路: \);):",s1):如mtcat所说:编程实现strcat的功能 void main() { char s1[80];n",j=0.h>0'0',直接用strcat函数 方法二;stdio!=' while((s1[i++]=s2[j++]); gets(s2):%s\;input two strings!=' while(s1[i]; int i=0; gets(s1);result; printf(" 方法一;\) i++,s2[80]; puts("#include<

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网