#include<stdio.h>
size_t strlcpy(char*dst,const char*src,size_t siz)
{
char*d=dst;
const char*s=src;
size_t n=siz;
if(n!=0&&--n!=0)
{
do
{
//当要复制的字符窜长度小于数组长度时
//break此时d重包含’'\0'
if((*d++=*s++)=='\0')
break;
}while(--n!=0);
}
if(n==0)
{
if(siz!=0)
{
//在d中添加结束符
*d='\0';
}
//将s在指针移到最后一个字符的后一位
while(*s++);
}
return(s-src-1);
}
int main()
{
char dst[8];
char * src="0123456789";
int len=strlcpy(dst,src,sizeof(dst));
printf("复制后字符串为:%s\n",dst);
printf("源字符串长度为 :%d\n",len);
}
size_t strlcpy(char*dst,const char*src,size_t siz)
{
char*d=dst;
const char*s=src;
size_t n=siz;
if(n!=0&&--n!=0)
{
do
{
//当要复制的字符窜长度小于数组长度时
//break此时d重包含’'\0'
if((*d++=*s++)=='\0')
break;
}while(--n!=0);
}
if(n==0)
{
if(siz!=0)
{
//在d中添加结束符
*d='\0';
}
//将s在指针移到最后一个字符的后一位
while(*s++);
}
return(s-src-1);
}
int main()
{
char dst[8];
char * src="0123456789";
int len=strlcpy(dst,src,sizeof(dst));
printf("复制后字符串为:%s\n",dst);
printf("源字符串长度为 :%d\n",len);
}