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;
}


次:ポインタとは

- C言語入門 記事一覧

おまけ

IPv6基礎検定

YouTubeチャンネルやってます!