わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

strcatとstrcpyの関係

strcatとstrcpyは,一方が定義されていれば,それを呼び出すことで,もう一方も定義できる,という関係にあります.
関数を書いてみます.

/* strcatを呼び出して,strcpyと同じ機能を実現する関数 */
char *my_strcpy(char *dest, const char *src)
{
  *dest = '\0';
  return strcat(dest, src);
}
/* strcpyを呼び出して,strcatと同じ機能を実現する関数 */
char *my_strcat(char *dest, const char *src)
{
  strcpy(dest + strlen(dest), src);
  return dest;
}

my_strcatについて,「return strcpy(dest + strlen(dest), src);」と書くわけにはいきません.これだと戻り値がdest + strlen(dest),すなわち,「文字列を連結する前の,文字列destの'\0'の位置」になってしまいます.