c语言函数strncpy,C语言strncpy函数实现

可见使用位移不但效率高,而且代码书写简洁至极,推荐使用!

#include

char *My_strncpy(char *strDes, const char *strSrc, int n)

{

char *sS = strSrc;

char *sD = strDes;

int srclen = strlen(strSrc);

//为了避免越界计算最终要拷贝多少个字符

n = srclen > n ? n : srclen;

//方法一,采用下标

/*int constN = n;

int indexN = n;

while (indexN >= 0)

{

if (constN == indexN)

{

*(sD + (constN - 0)) = '\0';

}

else

{

*(sD + (indexN)) = *(sS + indexN);

printf("%c\n", *(sD + (indexN)));

}

indexN--;

}*/

//方法二,采用位移 (推荐使用)

while (n > 0)

{

*sD = *sS;

sS++;

sD++;

n--;

}

//将末尾补\0标志字符串结束

*sD = '\0';

//这里返回值的作用是为了可以进行级联操作

//比如: strcat(str, strncpy(buf, src, 10));

return strDes;

}

int main(void)

{

char strD[100];

char strS[] = "helloworld";

My_strncpy(strD, strS, 5);

printf("%s", strD);

system("pause");

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值