2017-08-29 11 views
0

strncpy()をコピーするソース文字の先の大きさと数の両方がかかります腕の適切な同等のものを持っていない、strncpyを交換

strlcpy(char * /*dst*/, const char * /*src*/, size_t /*len*/); 

ので、ここで私達はちょうどstrlcpy()と希望のソース文字列を使用する必要がありますヌル終了ですか?

MSは、(少なくともあるように思われる。)完璧なものを提供している):初心者に

StringCchCopyN(LPTSTR pszDest, size_t cchDest, LPCTSTR pszSrc, size_t cchSrc);

strncpy()が確保されていない(strncpyを]が1)危険である理由。

+0

Cを記述する必要があります!= C++。それらの1つだけのタグ。 – tambre

答えて

0

あなたはあなた自身のもの

char *mystrncpy(char *dest, const char *src, size_t nbytes) 
{ 
    char *svd = dest; 

    if(nbytes) 
    { 
     dest[--nbytes] = 0; 
     while(*src && nbytes--) 
      *dest++ = *src++; 
    } 
    return svd; 
} 

OR

char *mystrncpy(char *dest, const char *src, size_t destsize, size_t srcsize) 
{ 
    memcpy(dest, src, destsize < srcsize ? destsize : srcsize); 
    dest[destsize -1] = 0; 
    return dest; 
}