两个char*型数据相加

Example

/* STRCPY.C: This program uses strcpy
 * and strcat to build a phrase.
 */

#include <string.h>
#include <stdio.h>

void main( void )
{
   char string[80];
   strcpy( string, "Hello world from " );
   strcat( string, "strcpy " );
   strcat( string, "and " );
   strcat( string, "strcat!" );
   printf( "String = %s\n", string );
}


Output

String = Hello world from strcpy and strcat!
    char* A = "hello";
    char* B = "world";
    char* C = (char*)new char(strlen(A) + strlen(B));
    strcpy(C,(string(A)+B).c_str());
    A = C;
#include <iostream.h>
using namespace std;
int main() 
{ 
  char A[30] = "test";
  char B[4] = "add"; 
  strcat(A,B);//A要有足够空间扩展B中内容
  cout << A << endl;
  //第二种
  char *a = "tttt";
  char *b = "dddd";
  char *dest = new char[strlen(a)+strlen(b)+1];
  strcpy(dest,a);
  strcat(dest,b);
  cout << dest;
  delete []dest;
  //用string就很简单了 楼上已经有介绍了
return 0; 
} 
//用数据结构的知识可以自己写函数的!
//调用库函数strcat()很方便的!
//我们自己写strcat()这个函数的功能岂不更好!

#include <stdio.h>
#define MAXSTRLEN 255
typedef unsigned char SString[MAXSTRLEN+1];

void StrAssign(SString &T,char *s); //生成一个值等于s的字符串

void Concat(SString &T,SString S1,SString S2);//S1和S2连接成T

void Strshow(SString T);

void main()
{
    SString s,s1,s2;
        char *str1="abcdeff";
    char *str2="asfasfasg";
    StrAssign(s1,str1);
    Strshow(s1);
    StrAssign(s2,str2);
    Strshow(s2);
        Concat(s,s1,s2);
        Strshow(s);
    
}
    
void StrAssign(SString &T,char *s) //生成一个值等于s的字符串
{
    size_t i,j,len=0;
    for(i=0;s[i]!='\0';++i)
        ++len;
    for(i=0,j=1;i!=len;++i,++j)
        T[j]=s[i];
    T[0]=len;//第一个存储字符串的长度
}

void Concat(SString &T,SString S1,SString S2)  //S1和S2连接成T
{
    int i,j;
    if(S1[0]+S2[0]<=MAXSTRLEN)
    {
        for(i=1,j=1;i<=S1[0];++i,++j)
            T[j]=S1[i];
        for(i=1,j=S1[0]+1;i<=S2[0];++i,++j)
            T[j]=S2[i];
        T[0]=S1[0]+S2[0];
    }
    else
        if(S1[0]<MAXSTRLEN)
        {
            for(i=1,j=1;i!=S1[0];++i,++j)
                T[j]=S1[i];
            for(i=1,j=S1[0]+1;i<=MAXSTRLEN;++i,++j)
                T[j]=S2[i];
            T[0]=MAXSTRLEN;
        }
        else
        {
            for(i=1,j=1;i<=MAXSTRLEN;++i,++j)
                T[j]=S1[i];
            T[0]=MAXSTRLEN;
        }

}        

void Strshow(SString T)   //输出字符串
{
    int i;
    for(i=1;i<=T[0];++i)
        printf("%c",T[i]);
    printf("\n");
}
#include <iostream> 
using namespace std; 

int main() 
{ 
    char * A = "Hello!";
    char * B = " Kitty";
    //两个char *类型的数据相加,必须分配足够大的空间用来存放连接后的数据
    char * C = new char[strlen(A)+strlen(B)+1];
    C[strlen(A)+strlen(B)] = '\0';
    strcpy(C,A);
    strcat(C,B);
    A = C;
    cout << A << endl;

    //把char型数据放到数组中三种方式
    char D[256];

    //1.本身char型数据就直接可以当数组来使用

    //2.使用循环
    for(int i = 0; i < strlen(A); i++)
        D[i] = A[i];

    //3.使用字符串拷贝
    strcpy(D, A);
    cout << D << endl;
    return 0; 
} 
char str1[15] = "hello";
char str2[15] = " world";

sprintf(strchr(str1,'\0'),"%s",str2);
此处有谁明白吗?很精巧吧!!!

 

posted @ 2019-01-08 09:48  chenlife  阅读(2773)  评论(0)    收藏  举报