【FROM MSDN && 百科】
原型:char *strcat(char *dest,const char *src);
#include<string.h>
Append a string.
把src所指字符串添加到dest结尾处(覆盖dest结尾处的' ')并添加' '。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++),则会出错,指向' '之后,会出现dest++,则指向了个' '的下一个位置,while(*dest !=' ') {dest++; //循环体内的++可以使指向字符串结束标志' '}while((*dest++=*src++)!=' '); return strDest; 为了实现链式操作,将目的地址返回}int main(void){ char str1[20]="hello"; // sufficent space char str2[]=" world";my_strcat(str1,str2);printf("%sn",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); //appendingprintf("str1 is %sn",str1);printf("str2 is %sn",str2);printf("str1 + str2 is %sn",str3);free(str3); //malloc的内存记得要free掉getch();return 0;}