飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2897|回复: 0

[C/C++] Strcat,strcpy,strcmp,Strlen函数原型

[复制链接]
  • TA的每日心情
    郁闷
    2017-1-19 11:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2011-1-20 15:26:37 | 显示全部楼层 |阅读模式
    1、Strcat函数原型如下:
    #include <stdio.h>
    #include <assert.h>
    #include <stdlib.h>
    char *strca(char *dst, const char * src)
    {
    char *dst_t;
    dst_t = (char *)malloc(sizeof(dst) + sizeof(src));
    char *start = dst_t;
    assert(dst && src);
    while(*dst_t = *dst)
    {
    dst_t++; dst++;
    }
    while(*dst_t = *src)
    {
    dst_t++; src++;
    }
    *dst_t = '\0';
    return start;
    }

    下面,贴上一个我自己写的strcpy函数,以做比较;相比之下,我自己写的这个strcpy效率就显得低了。
    char * my_strcat(char *s, char *t)
    {
    int i;
    char *st, *p_st, *p_s, *p_t;
    st = (char *)malloc(strlen(s)+strlen(t)+1);
    if(st == NULL)
    {  
       return NULL;
       printf("malloc fail!\n");
    }
    p_st = st;
    p_s = s;
    p_t = t;
    for(i = 0; i < strlen(s); i++)
       *(p_st++) = *(p_s++);

    for(i = strlen(s); i<(strlen(s) + strlen(t)); i++)
       *(p_st++) = *(p_t++);
    *p_st = '\0';
    return st;
      
    }

    int main()
    {
    char *dst = {"wo ai "};
    char *src = {"wo de guo jia !"};
    printf("%s\n",strca(dst,src));
    return 0;
    }
    2、Strcpy函数原型如下:
    char *strcpy(char *strDest, const char *strScr)
    {
    char *address=strDest;
    assert((strDest != NULL) && (strScr != NULL));
    while(*strScr) //是while(*strScr != ’\0’)的简化形式;
    {
    *strDest++ = *strScr++;
    }
    *strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度
    return address; //时,如果没有改语句,就会出错了。
    }
    以下是在VC6.0中调试的例子,函数名用strcpya代替。
    #include <stdio.h>
    #include <assert.h>
    char *strcpya(char *strDest, const char *strScr)
    {
    char *address = strDest;
    assert((strDest != NULL) && (strScr != NULL));
    while(*strScr)
    {
    *strDest++ = *strScr++;
    }
    *strDest = '\0';
    return address;
    }

    void main()
    {
    char str1[100]={"i love"};
    char str2[50]={"China"};
    printf("%s\n",strcpya(str1,str2));
    }
    3、Strcmp函数原型如下:
    int strcmp (const char *str1,const char *str2)
    {
    int len = 0;
    assert((str1 != '\0') && (str2 != '\0'));
    while(*str1 && *str2 && (*str1 == *str2))
    {
    str1++;
    str2++;
    }
    return *str1-*str2;
    }
    以下是在VC6.0中调试的例子,函数名用strcmpa代替。
    #include <stdio.h>
    #include <assert.h>
    int strcmpa (const char *str1,const char *str2)
    {
    int len = 0;
    assert((str1 != '\0') && (str2 != '\0'));
    while(*str1 && *str2 && (*str1==*str2))
    {
    str1++;
    str2++;
    }
    return *str1-*str2;
    }

    void main()
    {
    char str1[100] = {"i love"};
    char str2[50] = {"China "};
    printf("%d\n",strcmpa(str1,str2));
    }
    4、Strlen函数原型如下:
    int strlen(const char *str)
    {
    int len = 0;
    assert(str != NULL);
    while(*str++)
    {
    len++;
    }
    return len;
    }
    以下是在VC6.0中调试的例子,函数名用strlena代替。
    #include <stdio.h>
    #include <assert.h>
    int strlena(const char *str)
    {
    int len = 0;
    assert(str != NULL);
    while(*str++)
    {
    len++;
    }
    return len;
    }
    void main()
    {
    char str1[100] = {"i love"};
    char str2[50] = {"China "};
    printf("%d\n",strlena(str1));
    }

    相关帖子

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表