字符函数以及字符串函数

字符函数

字符函数是在字符上面做文章的函数,常用的有字符分类函数和字符转化函数

字符分类函数就是将目标字符进行判断,得出真假。

字符转换函数就是转换目标字符的形式。

字符串函数

于字符函数类似,是在字符串上做文章的函数,常用的有strlen、strcpy、strcat、strncpy等。

就拿strlen举例子:

size_t strlen ( const char * str );

用来数字符串长度的函数,输入目标字符串的指针即可运行,让我们来模拟实现一下:

int my_strlen(const char*str)
{
    int count = 0;
    while (*str!='\0')
    {
        str++;
        count++;
    }
    return count;
}

(很简单就能实现) 

再来看strcpy:

char* strcpy(char * destination, const char * source );

用来拷贝的函数,需要输入拷贝函数和目标函数,让我们模拟实现一下:

char* my_strcpy(char* arr2, const char* arr1)
{
    char* z = arr2;
    while (*arr2++ =*arr1++)
    {
        ;
    }
    return z;
}

 它会把拷贝字符串完全拷贝给目标字符串,但是不能指定拷贝的长度,于是我们能用另一个函数strncpy:

char * strncpy ( char * destination, const char * source, size_t num );

 括号里会再追加一个整形变量 ,指定拷贝的格数。

接着还有函数strcat用来追加内容,模拟实现:

char* my_strcat(char* arr1, const char* arr2)
{
    char* z = arr1;
    while (*arr1!='\0')
    {
        arr1++;
    }
    while (*arr1++ = *arr2++)
    {
        ;
    }
    return z;
}

函数strcmp用来比较字符串大小,模拟实现:

 

int my_strcmp(char* arrf, char* arrb)
{
    assert(*arrf);
    assert(*arrb);
    while (*arrf == *arrb&&*arrf)
    {

        arrf++;
        arrb++;
    }
    if (*arrf == 0 && *arrb == 0)
        return 0;
    else
        return *arrf - *arrb;
}

 当然也存在strncat,模拟实现:

char* my_strncat(char* arrf, const char* arrb, int num)
{

    assert(arrf);
    assert(arrb);
    char* set = arrf;
    int s = 0;
    while (*arrf)
    {
        arrf++;
    }
    while (*arrb)
    {
        *arrf = *arrb;
        arrf++;
        arrb++;
        s++;
    }
    *arrf = '\0';
    if (s != num)
    {
        for (int i = 0; i < num - s; i++)
        {
            arrf++;
            *arrf = '\0';
        }
    }
    return set;
}

 由此可见任何函数都可以通过最基础的代码模拟出来,但往往会很繁琐,所以引用库函数能给程序员带来很多便利。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值