C言語入門:文字列を比較する(strcmp)

2つの文字列を比較する関数として、strcmpが用意されています。 ここでは、strcmp関数の使い方を説明したいと思います。

サンプル1

以下のサンプルはstrcmpを使った例です。 strcmpを使うには「#include <string.h>」を最初に書く必要があります。

strcmpは2つの文字列を引数として取ります。 二つの文字列が同じ内容であれば、strcmpは0を返します。

2つの文字列が異なる場合、strcmpは0以外の値を返します。 2つの引数をソート(並び替え)したときに1つ目の引数の方が順番が後に来るようであればstrcmpは0よりも大きい値を返し、逆であれば0よりも小さい値を返します。 (ただ、strcmpの返り値が0であるかどうかの比較以外の使い方をしているコードはあまり目にすることはないので、0だと同じと覚えても問題はないと思われます)

以下のサンプルでは、同じ内容の2つの文字列をstrcmpに渡しています。


#include <stdio.h>
#include <string.h>

int
main()
{
 char a[4];
 char b[4];

 a[0] = 'a';
 a[1] = 'b';
 a[2] = 'c';
 a[3] = '\0';

 b[0] = 'a';
 b[1] = 'b';
 b[2] = 'c';
 b[3] = '\0';

 if (strcmp(a, b) == 0) {
   printf("same\n");
 } else {
   printf("different\n");
 }

 return 0;
}

上記例を実行すると「同じ」という意味の英単語である「same」という文字列が表示されます。

サンプル2

今度は、違う文字列をstrcmpに渡してみます。


#include <stdio.h>
#include <string.h>

int
main()
{
 char a[4];
 char b[4];

 a[0] = 'a';
 a[1] = 'b';
 a[2] = 'c';
 a[3] = '\0';

 b[0] = 'Z';
 b[1] = 'Z';
 b[2] = 'Z';
 b[3] = '\0';

 if (strcmp(a, b) == 0) {
   printf("same\n");
 } else {
   printf("different\n");
 }

 return 0;
}

サンプル3

今度は、最初だけ一致する文字列をstrcmpに渡してみます。


#include <stdio.h>
#include <string.h>

int
main()
{
 char a[4];
 char b[5];

 a[0] = 'a';
 a[1] = 'b';
 a[2] = 'c';
 a[3] = '\0';

 b[0] = 'a';
 b[1] = 'b';
 b[2] = 'c';
 b[3] = 'd';
 b[4] = '\0';

 if (strcmp(a, b) == 0) {
   printf("same\n");
 } else {
   printf("different\n");
 }

 return 0;
}


次:長さを指定して文字列を比較する(strncmp)

- C言語入門 記事一覧

おまけ