C言語で文字の比較をする方法

C言語では他の言語と異なり「==」演算子による文字列の比較ができません。

C言語の文字列はchar型の配列なので、比較を行った場合には先頭アドレスの値のみ比較(ポインタの比較)がされて、文字列の比較は行われません。

この記事では、C言語の正しい文字の比較をする方法を紹介します。

文字の比較をする方法

C言語で文字の比較を行う場合には、標準関数のstrcmp関数を使用します。

strcmp関数は第一引数と第二引数に比較を行う文字列変数を指定し、戻り値としてその結果を返します。

結果は以下の3パターンで表されます。

  1. 等しい場合:0
  2. 第一引数が大きい場合:1
  3. 第二引数が大きい場合:-1
文字列の大小関係は、先頭から走査して1文字ずつcharの変数として比較してその文字コードに差異がある場合に大きい/小さいとします。

strcmp関数を自作

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

先述した通りstrcmp関数は2つの引数を先頭から走査し1文字ずつcharの変数として比較しその結果を返します。

  1. 引数を先頭から走査
  2. 差異があれば走査終了
  3. 比較結果を返却
使うときは標準関数のstrcmp関数と同様に第一引数と第二引数に比較を行う文字列変数を渡します。

コメントを残す

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