#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *str_cat(char *str1, char *str2)
{
assert((str1!=NULL)&&(str2!=NULL));
char *str,*tmp;
str = (char *)malloc((strlen(str1)+strlen(str2)+1)*sizeof(char));
tmp = str; //保存地址
while(*str1!='\0') { //这里不能像复制函数那样写,会复制两次'\0'而导致错误
*str++ = *str1;
str1++;
}
while(*str2!='\0') {
*str++ = *str2;
str2++;
}
return tmp;
}
char *str_cpy(char *dst, char *sourc)
{
assert((sourc!=NULL)&&(dst!=NULL));
char *tmp;
tmp=dst; //保存地址
//int i=0;
printf("strlen sourc:%d\n",strlen(sourc));
while((*dst++ = *sourc++ )!='\0'); //已经包含复制了'\0'
return tmp;
}
int main()
{
char *str1="hello ";
char *str2="world";
char *str=NULL;
str = str_cat(str1,str2);
printf("str_cat:%s, %d\n",str,strlen(str));
free(str);
str_cpy(str,str1);
printf("str_cpy:%s, %d\n",str,strlen(str));
}
结果正确,能实现复制和连接的功能。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。