【FROM MSDN && 百科】
原型:char *strcat(char *dest,const char *src);
#include<string.h>
Append a string.
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
DEMO1:实现自己的strcat函数
#include <stdio.h>
#include <conio.h>
#include <assert.h>
char *my_strcat(char *dest,const char *src) //将源字符串加const,表明其为输入参数
{
char *strDest=dest;
assert(dest!=NULL && src!=NULL); //对源地址和目的地址加非0断言
//here
//若使用while(*Dest++),则会出错,指向'\0'之后,会出现dest++,则指向了个'\0'的下一个位置,
while(*dest !='\0')
{
dest++; //循环体内的++可以使指向字符串结束标志'\0'
}
while((*dest++=*src++)!='\0');
return strDest; 为了实现链式操作,将目的地址返回
}
int main(void)
{
char str1[20]="hello"; // sufficent space
char str2[]=" world";
my_strcat(str1,str2);
printf("%s\n",str1);
getch();
return 0;
}
DEMO2: strcpy && strcat
#include <stdio.h>
#include <conio.h>
/*strcpy && strcat*/
int main(void)
{
char string[80];
strcpy(string,"Hello world from ");
strcat(string,"strcpy ");
strcat(string,"and ");
strcat(string,"strcat!");
printf("string = %s \n",string);
getch();
return 0;
}
结果输出:string = Hello world from strcpy and strcat!
DEMO3:str1 + str2 =str3
#include <stdio.h>
#include <conio.h>
#include <assert.h>
#include <string.h>
#include <malloc.h>
#pragma warning (disable:4996)
int main(void)
{
char *str1="Welcome ! ";
char *str2="Hello,world!";
char *str3;
str3=(char*)malloc(strlen(str1)+strlen(str2)+1); //申请空间
//assert(str3);
if (str3 == NULL)
{
fprintf(stderr,"malloc failed......!\n");
}
strcpy(str3,str1); //拷贝
strcat(str3,str2); //appending
printf("str1 is %s\n",str1);
printf("str2 is %s\n",str2);
printf("str1 + str2 is %s\n",str3);
free(str3); //malloc的内存记得要free掉
getch();
return 0;
}