"Yasushi Shinjo" <yas@is.tsukuba.ac.jp> wrote in message
news:YAS.04Jan14033858@kirk.is.tsukuba.ac.jp...
> 新城@筑波大学情報です。こんにちは。
> たしかに、malloc() した直後で大きさが分かっていれば strcpy()
> でもOKというのはわかります。でも、大きさわかつているなら、
> memcpy() したい。
>
> void copy(char *dst, char *src, size_t n)
> {
>    size_t l = strlen(src);
>    if( l > n-1 )
>        l = n-1 ;
>    memcpy(dst,src,l);
>    dst[l] = 0;
> }

>
> > くらいでもよいような。また,仕様は若干違ってきますが,
> >    strncpy(dst, src, n);
> >    dst[n] = '\0';
> > でも十分な気がします。
>
> src が短い時、これは重いんです。strlcpy() ならいいんだけど。

質問です。バイト単位,ワード単位の違いはあるかも知れませんが,memcpyって
size_t n分きちっりコピーするんでは。だとしたら,strncpyが重いと言うのは
ちょっと納得できません。つまり,ワード単位を考慮したstrncpyを作れば(あるの
かも知れませんが)memcpy採用よりは速くなるはずと思いますが。(strlen(src)が
不要な分だけ。)

-- 
******************************
   keizi kounoike
******************************