str类常用函数源代码

strlen() 求字符串的长度

源代码:
#include<assert.h>
//strlen 源码
int strlen(const char *str)
{
    assert(*str != '\0');        //断言,判断字符串是否为空,下同  
    const char *cp = str;      //str依然为字符串首位置
    while(*cp ++);      
    return (cp - str - 1); //-1是因为字符串末尾有\0, strlen得到的字符串长度没有\0
}

strcmp() 判断两个字符串的大小

源代码:
#include<assert.h>
//判断字符串大小
int strcmp(const char *src, const char *dst)
{
    assert(NULL != src && NULL != dst);
    while(*src && *dst && *src++ == *dst++);//当两个字符串都不为空切当前字符串相等时
    return *src - *dst;  //返回当前不等字符差值,根据返回值的正负号判断大小
}

strcpy() 将目标字符串复制给源字符串并覆盖源字符串

源代码:
#include<assert.h>

//copy字符串
char *strcpy(char *src, const char *dst)
{
    assert(NULL != src && NULL != dst);

    char *temp = src;   //因为下面*str++程序运行完时str不是指向字符串首位置,所以需要定义一个新的字符串保存字符串首地址,下同

    while(*src++ = *dst++);

    return temp;
}

strncpy() 按照指定字符个数copy字符串 

源代码:
#include<assert.h>
//按照指定个数copy字符串
char *strncpy(char *src, const char *dst, int count)
{
    assert(NULL != src && NULL!= dst);
    
    char *temp = src;

    while((count--) && (*src++ = *dst++));//这里要注意count--要在&&前面,不然会出错
    *src = '\0';   //由于不是copy整个字符串,所以结尾可能不是\0所以要自己加上
    

    return temp;

}

strcat() 将两个字符串拼接

源代码:
#include<assert.h>

//拼接字符串

char *strcat(char *src, const char *dst)
{
    assert(NULL != src && NULL != dst);

    char *temp = src;

    while(*src)   //让src字符串跑到结尾,然后跟strcpy一样实现拼接
    {
        src ++;
    }
    while(*src++ = *dst++);

    return temp;
}

strncat() 按照指定个数实现制定个数字符的拼接

源代码:
#include<assert.h>

//按照指定字符个数拼接字符串

char *strncat(char *src, const char *dst, int count)
{
    assert(NULL != src && NULL != dst);

    char *temp = src;

    while(*src)
    {
        src++;
    }

    while((count--) && (*src++ = *dst++));

    return temp;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴着眼镜看不清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值