C语言库函数strncpy,strncat,strncmp函数的模拟实现

strncpy,strncat,strncmp函数的模拟实现

#include<stdio.h>
void my_strncpy(char* arr1,const char* arr2,int n)
{
    for(int i = 0;i<n;i++)
    {
        *arr1++ = *arr2++;
    }
    *arr1 = '\0';}
int main()
{
    char arr1[] = "abcdef*";
    char arr2[] = "abef";
    my_strncpy(arr1,arr2,3);
    printf("%s",arr1);
    return 0;
}

(解析)
1.strncpy函数较strcpy函数多了一个大小的变量n,即我能指定拷贝几个字符,我自己说了算
2.变化就是加了一个循环控制n次,每一次拷贝一个字符,然后地址加一,不再将’\0’作为拷贝结束的标志
3.因为拷贝未涉及‘\0’,所以最后加上一个‘\0’为宜,避免拷贝完‘\0’也被替换

#include<stdio.h>
void my_strncat(char* arr1,const char* arr2,int n)
{
    while(*arr1)
    {
        arr1++;
    }
    for(int i = 0;i<n;i++)
    {
        *arr1++ = *arr2++;
    }
    *arr1 = '\0';
}
int main()
{
    char arr1[30] = "abcdef*";
    char arr2[30] = "abef";
    my_strncat(arr1,arr2,3);
    my_strncat(arr2,arr2,4);
    printf("%s\n",arr1);
    printf("%s\n",arr2);
    return 0;
}

(解析)
1.strncat函数意思是我指定几个字符追加到一个字符串上去,可以实现一个字符串的自我叠加(strcat不行,因为‘\0’会在一开始被取代)
2.指定字符个数的思路仍然是循环控制
3.先找到要被加的字符串的‘\0‘位置,随后开始叠加n次,最后补上’\0‘

#include<stdio.h>
int my_strncmp(const char* arr1,const char* arr2,int n)
{
    while(n--)
    {
        if(*arr1 == *arr2)
        {
            arr1++;
            arr2++;
            continue;
        }
        else
            return (int)(*arr1 - *arr2);
    }
    return 0;
}
int main()
{
    char arr1[] = "abcdef*";
    char arr2[] = "abef";
    printf("%d\n",my_strncmp(arr1,arr2,2));
    printf("%d\n",my_strncmp(arr1,arr2,3));
    return 0;
}

(解析)
1.比较n个字符,用循环思想控制次数
2.如果字符相同,则地址一起++,比较下一个字符,如果不一样,跳出循环直接返回ASC码差值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值