分享

自己编写strcpy和strcat

 champion_xu 2012-07-31
#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));
}

结果正确,能实现复制和连接的功能。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多