c++中 写一个两个字符串相连接的函数:char *strcat(char *s1,const char *s2) 其作用是将s2接到s1的末端

作者&投稿:钭畅 (若有异议请与网页底部的电邮联系)
编写子函数,实现对两个字符串进行连接。即void Strcat(char *s1,char *s~

完整程序如下:
#include
void Strcat(char* s1, char* s2)
{
while (*s1 != '\0') s1++;
while((*s1++ = *s2++) != '\0');
}
int main(){
char str1[200],str2[200];
gets(str1);
gets(str2);
Strcat(str1, str2);
printf("%s
",str1);
return 0;
}

#include

char *link(char *,char *);
void main( )
{
char a[100],b[100];
gets(a);
gets(b);
link(a,b);
puts(a);
}

char *link(char *a,char *b)
{
int alength=0,blength=0;
char c[200]; int k =0;
while(*(a+alength)!='\0') alength++;
while(*(b+blength)!='\0') blength++;
int i = 0,j = 0;
for(;i<alength&&j<blength;)
{
if((i+j)%2 == 0)
{ *(c+k) = *(a+i); i++; k++;}
if((i+j)%2 == 1)
{ *(c+k) = *(b+j); j++; k++;}
}
if(i>=alength&&j>=blength)
{ }
else if(i<alength)
{
for(;i<=alength;i++)
{ *(c+k) = *(a+i); k++;}
}
else if(j<blength)
{
for(;j<blength;j++)
{ *(c+k) = *(b+j); k++;}
}

for(i =0;i<k;i++)
*(a+i) = *(c+i);
*(a+i) = '\0';

return a;
}

// 思想简单,所以代码写得有点淤长,但是是能够解决问题的。
// 并且要注意gets、puts函数对于字符串的处理是以null或者'\0'结束的。

这个问题细考虑一下还是蛮复杂的,如果在主程序中给定s1是一个指针的话,即char*s1="good";,那么s1的大小是给定的,如果想通过strcat将两个字符串连接的结果放到s1中的话,必须用链表来做,除非你主函数中给定的s1是一个字符数组,而且数组大小要足够大,能够容的下s1和s2,那么就很容易将s1改变了。如果你不是非要把s1和s2合并到s1中去的话,我们可以引入第三个字符指针s3,示例程序如下:
#include <iostream>
using namespace std;

int strcat(char *s1,char*s2)
{
int i,i1,i2;
i1=strlen(s1);
i2=strlen(s2);

char *s3=new char[i1+i2+1];
while(*s1!='\0')
*(s3++)=*(s1++);

while(*s2!='\0')
*(s3++)=*(s2++);

*(s3++)='\0';
for(i=0;i<i1+i2+1;i++)
s3--;

cout<<"合并后的数组为:"<<s3<<endl;
cout<<"合并后数组大小为:"<<strlen(s3)<<endl;
return strlen(s3);
}

int main()
{
int i;
char *s1="good";
char *s2="day";
i=strcat(s1,s2);
return 0;
}
另外,站长团上有产品团购,便宜有保证

#include "stdio.h"
char * strcat(char *s1,char *s2)
{
int i=0,j=0;
char *p=s1,*q=s2;
while(*p++)i++;
while(*q++)s1[i++]=s2[j++];
return s1;
}
void main()
{
char a[20]="abc";
char b[10]="defg";
printf("%s\n",strcat(a,b));
}

char *strcat(char *s1,const char *s2)
{
char *p1=s1,*p2=(char *)s2;
while (*p1) ++p1;
while (*p2) *p1++=*p2++;
*p1=0;
return s1;
}

#include <iostream.h>
char *strcat(char *s1, const char *s2)
{
char *p;
p = s1;
while(*p)
p++;
while(*p++ = *s2++);
return s1;
}
int main()
{
char s1[10] = "abc";
char s2[4] = "123";
char *p = strcat(s1, s2);
cout << p << endl;
return 0;
}


鲁山县13141168091: 用C++编写2个字符串相接
茅彭奥尔: 有一种字符串连接函数strcat 用法如下: strcat(str1,str2) 其中str1和str2可以是字符串指针或者字符串数组 预处理命令应包含: #include"string.h"

鲁山县13141168091: 编程实现两字符串连接C++ -
茅彭奥尔: 既然楼上用了while 那么我也用下把 来个更简洁的#include <iostream> using namespace std; int main() { char str_a[32] = "Hello!"; char str_b[16] = "www.baidu.com"; int i=0, j=0; while(str_a[i++]); i--; while(str_a[i++]=str_b[j++]); cout << str_a << endl; return 0; }

鲁山县13141168091: C++编程实现两个字符串的连接.要求使用字符数组保存字.. -
茅彭奥尔: string str1="hello "; string str2="world"; char* str=(str1+str2).c_str(); 这样str就能当做c字符串操作了

鲁山县13141168091: c++中 写一个两个字符串相连接的函数:char *strcat(char *s1,const char *s2) 其作用是将s2接到s1的末端 -
茅彭奥尔: #include <iostream.h> char *strcat(char *s1, const char *s2) { char *p; p = s1; while(*p) p++; while(*p++ = *s2++); return s1; } int main() { char s1[10] = "abc"; char s2[4] = "123"; char *p = strcat(s1, s2); cout << p << endl; return 0; }

鲁山县13141168091: c++中,编写一个程序,将两个字符串了连接起来,结果取代第一个字符串.要求用string方法. -
茅彭奥尔: 代码如下看看是否可行? //连接两个字符串 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<assert.h> char* strcat1(char *strDest , const char *strSrc)//Strcat函数原型如下:将源字符串加const,表明其为输入参数,不会改变其内...

鲁山县13141168091: c++中把两个字符串常量中连接起来 -
茅彭奥尔: 若定义:string s1="12345",s2="abcdefghijkl",s3="678jfkl3748jfdk"; s1+s2+s3就把它们连接起来了……或者(s1+=s2)+=s3;就把s2、s3依次接到s1后面了.

鲁山县13141168091: C++编写一个程序,将从键盘输入的两个字符串连接起来,并统计连接好的字符串的实际长度
茅彭奥尔: #include&lt;iostream.h&gt; void* Strcat(char s[],char t[]); int main(void) { char s[100],t[100]; cout&lt;&lt;"请输入第一个字符串:"; cin&gt;&gt;s; cout&lt;&lt;"请输入第二个字符串:"; cin&gt;&gt;t; Strcat(s,t); cout&lt;&lt;"连接后字符串为:...

鲁山县13141168091: C++怎样把两个字符串连接在一起? -
茅彭奥尔: // 介绍两种方法,源程序如下: ////////////////////////////////////////////////////////////////////// // 方法一:#include <cstring> #include <iostream> #include <cstring> using namespace std; void main() { string str1 = "abc"; string str2 = "def";cout << "方法一:#...

鲁山县13141168091: c++程序,连接两个字符串 -
茅彭奥尔: #include<iostream> using namespace std; int main(void) { char a[20],b[20],c[100],r='!'; int t,s; cout<<"please input first char:"; cin>>a; cout<<"please input second char:"; cin>>b; //cout<<b; for(t=0;a[t]!='\0';t++)//// { r=a[t]; c[t]=a[t]; } //cout<<t; for(s=...

鲁山县13141168091: C++编程:重载“+”运算符实现两个字符串的连接 -
茅彭奥尔: #include <iostream.h> #include <assert.h> char*mystrcpy(char *strDest , const char *strSrc){assert((strDest!=NULL) && (strSrc!=NULL));char *temp = strDest;while((*strDest++ = *strSrc++)!='\0');return temp;} int mystrlen(const char *array) {int...

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