C言語で文字コピーする方法

C言語では他の言語と異なり文字列の直接代入ではコピーができません。

C言語の文字列はchar型の配列なので、直接代入を行った場合には先頭アドレスのみがコピーされて、実体のコピーは行われません。

この記事では、C言語の正しい文字コピーの方法を紹介します。

文字コピーの方法

C言語で文字コピーを行う場合には、標準関数のstrcpy関数を使用します。

strcpy関数は第一引数にコピー先の変数を、第二引数にコピー元の変数を指定し、戻り値としてコピー先の先頭アドレスを返します。(戻り値は使わなくても良いです)

この時に、コピー元の文字列長よりもコピー先の要素数が小さい場合には動作未定義となります。

また、strcpy関数ではコピー元の終端文字までをコピーするため、コピー元文字列に終端文字が存在しない場合にも動作未定義となります。

strcpy関数を自作

strcpy関数の使い方がわかったところで、挙動のさらなる理解を深めるためにstrcpy関数を自作してみます。

先述した通りstrcpy関数はコピー元文字列の先頭から走査して終端文字が見つかるまでをコピー先文字列にコピーします。

  1. コピー元文字列を先頭から走査
  2. 終端文字でなければコピー先文字列にコピー
  3. 終端文字なら終端文字をコピーして終了
使うときは標準関数のstrcpy関数と同様に第一引数にコピー先変数を、第二引数にコピー元変数を渡します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です