自定义字符串函数:strlen,strcat,strcpy,strcmp

计算字符串长度函数strlen:

int mystrlen(char *s)
{
    int count = 0;
    char *p = s;

    if (!p)
    {
        return count;
    }

    while (*p != '\0')
    {
        count++;
        p++;
    }

    return count;
}

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

字符串连接函数strcat:

int mystrcat(char str1[], char str2[])
{
    if (!str1 || !str2)
    {
        return;
    }
    int i = 0;
    while (str1[i] != '\0')
    {
        i++;
    }
    int j = 0;
    while (str2[j] != '\0')
    {
        str1[i++] = str2[j++];
    }
    str1[i] = '\0';
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

字符串拷贝函数strcpy:

int mystrcpy(char str1[], char str2[])
{
    int i = 0;

    if (!str1 && !str2)
    {
        return;
    }

    while (str2[i] != '\0')
    {
        str1[i++] = str2[i];
    }
    str1[i] = '\0';
} 
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

字符串比较函数strcmp:

int mycmp(char str1[], char str2[])
{
    int i = 0;

    while ((str1[i] == str2[i]) && str1[i] != '\0')
    {
        i++;
    }

    return str1[i]-str2[i];
}

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

另一种字符串比较方法,输出-1,0,1来达到比较效果:

int mycmp(char *str1, char *str2)
{
    for (; *str1 != '\0';)
    {
        if (*str1 > *str2)
        {
            return 1;
        }
        else if (*str1 < *str2)
        {
            return -1;
        }
        else
        {
            return 0;
        }
        str1++;
        str2++;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值