Re: str{,l,n}cpy()
"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
******************************
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735