Re: [Q] see return value (strncpy)
"Mito" <co_mon@ybb.ne.jp> wrote in message
news:m31xq69bk5.fsf@kzin.dip.jp...
> yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
>
> というのを踏まえて、たとえばですが、こんなのでも多くのケース
> では十分安全だと思います。
>
> void copy(char *dst, char *src, size_t n)
> {
> char *b;
> size_t l = strlen(src);
> if (!(b = (char*)malloc(l + 1)))
・・・・・・・・
> free(b);
> }
本筋からは離れますが,上とほぼ同じことでよいなら,strcpyにこだわらなくとも
char * copyn(char *dst, char *src, size_t n) {
int i;
char *s;
s = dst;
for(i = 0; !(*dst++ = *src++) || i < n - 1; i++);
*dst = '\0';
return s;
}
くらいでもよいような。また,仕様は若干違ってきますが,
strncpy(dst, src, n);
dst[n] = '\0';
でも十分な気がします。
strncpyでスピードのことを言われていた水戸さんなのに,なんか変な感じがしまし
た。
--
******************************
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