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;
}
おまけ