【程序代码】--- string函数实现

  1. strlen
  2. strcpy
  3. strcmp
  4. strcat
  5. strchr
  6. strncpy
  7. strncmp
  8. strncat

strlen

返回字符串长度,不计算’\0’


int my_strlrn(const char *str)
{
    assert(str != NULL);
    int len = 0;
    while (*str++ != '\0')
    {
        len++;
    }
    return len;
}

strcpy

拷贝字符串


char *my_strcpy(char *dst, const char *src)
{
    assert((dst != NULL)&&(src != NULL) )
    while ((*dst++ = *src++) != '\0') ;
    return dst;
}

strcmp

比较两个字符串str1,str2,相同输出0,str1 < str2反回-1,str1 > str2返回1


int my_strcmp(const char *str1, const char *str2)
{
    assert((str1 != NULL)&&(str2 != NULL));
    int ret = 0;
    while (ret = (*(unsigned char *)str1++) - (*(unsigned char *)str2++) 
            && *str1 != '\0' )
    {
        if ( ret = 0)
        {
            return 0;
        }
        else if(ret < 0)
        {
            return -1;
        }
        else
        {
            return 1;
        }
    }   
}

strcat

字符串拼接函数


char *my_strcat(char *dst, const char *src)
{
    assert((dst != NULL)&&(src != NULL));
    char *tmp = dst;
    while (*tmp != '\0')
    {
        tmp++;
    }
    while ((*tmp++ = *src++) != '\0') ;
    return dst;
}

strchr

寻找字符第一次在字符串中出现的位置


char *my_strchr(const char *str, char c)
{
    assert(str != NULL);
    while (*str != '\0' && (*str++ != c))
    {
        ;
    }
    return *str == c ? c :NULL;
}

strncpy

拷贝字符串前n位


char *my_strncpy(char *dst, const char *src, size_t len)
{
    assert((dst != NULL)&&(src != NULL) )
    char *tmp = dst;
    while(len--)
    {
        *dst++ = *src++;
    }
    return dst;
}

strncmp

比较字符串前n位


int my_strcmp(const char *str1, const char *str2, size_t n)
{
    assert((str1 != NULL)&&(str2 != NULL));
    int ret = 0;
    while (ret = (*(unsigned char *)str1++) - (*(unsigned char *)str2++) 
    && n-- && *str1 != '\0' && *str2 != '\0')
    {
        if (ret < 0)
        {
            return -1;
        }
        if (ret > 0)
        {
            return 1;
        }
    }   
    if (*str1 == '\0' && *str2 != '\0')
    {
        return -1;
    }
    if (*str1 != '\0' && *str2 == '\0')
    {
        return 1;
    }
    return 0;
}

strncat

在字符串结尾拼接n个字符


char *my_strncat(char *dst, const char *src, size_t n)
{
    assert((str1 != NULL)&&(str2 != NULL));
    char *res = dst;
    while(*res++ != '\0') ;
    while (n-- && (*res++ = *src++)!='\0') ;
    return res;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值