每日一题——strncat函数实现(第二题)

strncat函数解释:

C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。

代码如下

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
char* my_strncat(char* e, char* e1,int n)
{
    char* first = e;
    while (*e)
    {
        e++;
    }
    while (*e++=*e1++)
    {
        n--;
        if (n == 0)
        {
            *e = '\0';
            return first;
        }
    }
    return first;
}
int main()
{
    char a[20] = "ahdhsj";
    char b[20] = "sdjskjk";
    int n = 0;
    printf("请输入要追加字符的个数\n");
    scanf_s("%d", &n);
    printf("%s", my_strncat(a, b, n));
    return 0;
}

函数整体

 

函数区域解释

因为函数的返回值是字符型指针类型,所以我们先定义一个字符型指针first指向e

while函数循环将e指针指向'\0'处,方便将字符串追加到后面

while循环将e1指针指向的字符赋值给e指针指向的空间(因为此时e指针已经经过一次while循环,e指针已经指向'\0')

 每循环一次,n--(n为追加字符的个数)

每次循环判断如果n已经为0,则将e指针现在指向的空间赋值为'\0',并返回指针first

如果当指针e1的值为'\0'时,赋值给e,n的值就算不为0,while函数也结束循环,并返回指针first

运行结果

最后运行结果虽然追加的字符的数量是9大于字符串本身的长度,但在while循环里已经终止了,当指针e1的值为'\0'时,赋值给e,防止了越界访问

好啦,今日的题目分享就到此结束了,如果有分享不好的地方望大家海涵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值