C言語入門:長さを指定して文字列を比較する(strncmp)
2つの文字列を比較する関数として、strcmpを紹介しましたが、strcmpは文字列全てを比較してしまいます。 文字の長さを指定して比較を行いたい場合、strcmpではなくstrncmpを利用します。 ここでは、strncmp関数の使い方を説明したいと思います。
サンプル1
以下のサンプルはstrncmpを使った例です。 strncmpを使うには「#include <string.h>」を最初に書く必要があります。
strncmpは2つの文字列と比較を行う長さを引数として取ります。 二つの文字列が同じ内容であれば、strncmpは0を返します。
2つの文字列が異なる場合、strncmpはstrcmp同様に0以外の値を返します。 2つの文字列が異なる場合の共同もstrcmpと同様です。
以下のサンプルでは、同じ内容の2つの文字列をstrncmpに渡しています。
#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 (strncmp(a, b, 4) == 0) {
printf("same\n");
} else {
printf("different\n");
}
return 0;
}
上記例を実行すると「同じ」という意味の英単語である「same」という文字列が表示されます。
サンプル2
今度は、後半が違う文字列をstrncmpに渡してみます。
#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] = 'Z';
b[3] = '5';
b[4] = '\0';
if (strncmp(a, b, 2) == 0) {
printf("same\n");
} else {
printf("different\n");
}
return 0;
}
次:ポインタとは
おまけ