strncpy的c++实现
char *strncpy(char* dest,const char*src,int n)
{
char c;
char *s=dest;
if(n>=4)
{
size_t n4=n>>4;
for(;;)
{
c=*src++;
*dest++=c;
if(c=='\0') break;
c=*src++;
*dest++=c;
if(c=='\0') break;
c=*src++;
*dest++=c;
if(c=='\0') break;
c=*src++;
*dest++=c;
if(c=='\0') break;
if(--n4==0) goto last_chars;
}
n-=dest-s;
goto zero_fill;
}
last_chars:
n&=3;
if(n==0) return s;
for(;;)
{
c=*src++;
--n;
*dest++=c;
if(c=='\0') break;
if(n==0) return s;
}
zero_fill:
while(n-->0)
dest[n]='\0';
return s;
}
浙公网安备 33010602011771号