strncpy函数的实现

       strncpy函数的函数原型是char *strncpy(char *dest, char *src, int len)。它的作用是将src指针指向的字符串拷贝到dest指针指向的数组,在遇到‘\0’或者以实现已经复制了len个字符,函数都会终止执行。

    这里需要注意的是:

    1、函数开始时要判断地址是否为空,可以用断言来判断;

    2、dest指针指向的字符数组的长度必须要大于src指针指向的字符串的长度;

    3、在len小于dest指针指向的数组长度时,则实现len个字符的正常复制;若len大于等于dest指针指向的数组长度时,则将src指针指向的字符串全部拷贝到给定数组中。

    4、最后别忘记加上'\0'给字符数组。

    具体实现如下:

char *strncpy(char *dest, const char *src, int len)
{
    assert(dest!=NULL && src!=NULL);

    char *temp;
    temp = dest;
    for(int i =0;*src!='\0' && i<len; i++,temp++,src++)
         *temp = *src;
   *temp = '\0';
    return dest;
}

 测试如下:

#include <iostream>
#include <string>
#include <assert.h>
//#pragma pack(2)
using namespace std;

int main()
{
 char *strncpy(char *,const char *,int);
 const char *str1 = "I love China";
 char str[13];
 char *str2;
 str2 = str;
 str2 = strncpy(str2,str1,12);
 cout<<"str1="<<str1<<endl;
 cout<<"str2="<<str2<<endl;

}

    因为要用到assert,所以别忘了添加头文件<assert.h>

    最终输出的结果是:str1=I love China

                                 str2=I l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值