c语言复习之模拟实现strlen函数、strcpy函数、strncpy函数、strcat函数、strncat函数

复习的时候发现重要的模拟函数的实现还是有点生疏,今天我就来概括的复习一波~我们一个一个的来实现一遍

1.模拟实现strlen其实非常简单哦~
strlen函数原型:size_t strlen ( const char * str );
功能:计算字符串长度,不包括’\0’;

模拟实现strlen函数
int my_strlen(const char* arr)
{
    int count = 0;
    while (*arr)
    {
        count++;
        *arr++;
    }
    return count;
}
int main()
{
    char arr[] = "hello";
    int ret = my_strlen(arr);
    printf("%d\n", ret);
    system("pause");
    return 0;
}

2.模拟实现strcpy函数
函数原型char * strcpy ( char * destination, const char * source );
destination目标字符串 source源字符串
功能:将源字符串拷贝到目标字符串上

#include<string.h>  
#include<assert.h>  
char* my_strcpy(char* dest, const char* src)
{
    char *ret = dest;
    assert(dest != NULL);
    assert(src != NULL);
    while (*src)
    {
        *(dest++) = *(src++);
    }
    //while(*(dest++)=*(src++))
    //{
          ;
    //}
    return ret;
}
int main()
{
    char arr[50]= { 0 };
    char srr1[] = "my love";
    my_strcpy(arr, srr1);
    printf("%s\n", arr);
    getchar();
    return 0;
}

3.模拟实现strncpy函数
函数原型
char * strncpy ( char * destination, const char * source, size_t num );
功能:将源字符串的前n个字符串拷贝到目标字符串上

char* my_strncpy(const char* dest, const char* src,int n)
{
    char* ret = dest;
    while (n--)
    {
        *(dest++) = *(src++);
    }
    return ret;
}
int main()
{
    char arr1[20] = "hello world";
    char arr2[10] = "ming";
    my_strncpy(arr1, arr2, 4);
    printf("%s\n", arr1);
    system("pause");
    return 0;
}

4.模拟实现strcat函数
函数原型:char * strcat ( char * destination, const char * source );
功能:将源字符串追加到目标字符串后面

char* my_strcat(char* arr1, char* arr2)
{
    char* ret = *arr1;
    while (*arr1)
    {
        *arr1++;
    }
    while (*arr2)
    {
        *arr1++ = *arr2++;
    }
    return ret;
}
int main()
{
    char arr1[50] = "hello ";
    char arr2[] = "world";
    my_strcat(arr1, arr2);
    printf("%s\n", arr1);
    system("pause");
    return 0;
}

5.模拟实现strncat函数
函数原型:char * strncat ( char * destination, const char * source, size_t num );
功能:将源字符串中的前n个字符追加到目标字符串后面

char* my_strncat(char* dest,const char* src,int n)
{
    char* ret = dest;
    while (*dest)
    {
        *dest++;
    }
    while (n--)
    {
        *(dest++) = *(src++);
    }
    return ret;
}
int main()
{
    char arr1[50] = "hello ";
    char arr2[] = "world";
    my_strncat(arr1, arr2, 3);
    printf("%s\n", arr1);
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值