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