64,642
社区成员
发帖
与我相关
我的任务
分享
//用数据结构的知识可以自己写函数的!
//调用库函数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.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;
}
char* A = "hello";
char* B = "world";
char* C = (char*)new char(strlen(A) + strlen(B));
strcpy(C,(string(A)+B).c_str());
A = C;
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!
#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;
}
1)
int main()
{
char a[32] = "hello ";
char b[32] = "world";
strcat(a, b);
printf("%s\n", a);
return 0;
}
2)
int main()
{
char* p = "hello world";
char a[32];
strcpy(a, p);
printf("%s\n", a);
return 0;
}