[ace-users] I write a function named nstrsncpy
    =?GB2312?B?wO65+se/?= 
    ligq at channelsoft.com
       
    Sat Jun 23 02:19:49 CDT 2007
    
    
  
hi, all:
I wrote a function,
unsigned int nstrsncpy(char *dst, const char *src, unsigned int maxlen)
{
  unsigned int len = 0;
  if (dst==0 || src==0)
    return len;
  --maxlen;
  while (*src && len<maxlen)
  {
    *dst = *src;
    dst++;
    src++;
    len++;
  }
  *dst = '\0';
  return len;
}
It copy char array 'src' to char array 'dst'. If the length of src is >= maxlen, It just copy maxlen-1 bytes. It will add '\0' to dst at the end, so it's safe for the caller.
At last, it returns copied bytes.
I use this function to replace following:
int len = strlen(src);
if(len >= maxlen-1)
  len = maxlen-1;
memcpy(dst, src, len);
dst[len] = '\0';
====>
int len = nstrsncpy(dst, src, sizeof(dst));
Anyone can give me an advise?
thanks a lot.
Kevin Lee 
    
    
More information about the Ace-users
mailing list