"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
******************************