<kounoike@mbh.nifty.com> wrote in message
news:bu32qh$qmo$1@caraway.media.kyoto-u.ac.jp...
> "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が重いと言うのは
> ちょっと納得できません。つまり,ワード単位を考慮したstrncpyを作れば(ある
の
> かも知れませんが)memcpy採用よりは速くなるはずと思いますが。(strlen(src)
が
> 不要な分だけ。)

自己フォロー。すいません,これ撤回させて頂きます。早とちりでした。ワード単位
を考慮したstrncpyのスマートな実装ってそう簡単ではないような気がします。でき
たところでmemcpyより速くなるとは思えません。つまり,どうやって残り(これも
strlen(src)しなければ分からない。)をワード単位に,しかも'\0'で埋めるのかと
考えると。ちょっと私では思いつきません。
蛇足ですが,上の例では,文字列のコピーだけ考えるなら
memcpy(dst,src,n);
dst[n] = 0;
で用はなすように思います。dst[l] = 0は保証されているから。

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