C言語 文字数を指定した文字列の比較(一致判定) - string.h - [ strncmp ]

2008.11.14 Friday | by LRESULT


字数を指定した文字列の比較には、strncmp()を使います。


strncmp
書式 int strncmp( const char *s1, const char *s2, size_t n )
機能 文字数を指定した文字列の比較
引数 const char *s1 : 比較する文字列
const char *s2 : 比較する文字列
size_t n : 比較する先頭からの文字数
戻り値 s1 < s2 : 負の値
s1 = s2 : 0
s1 > s2 : 正の値

「¥0」までが比較対象となります。
2つの文字列が一致するかどうかの判定に、よく使われます。
処理系により異なるらしいのですが、
  基本的には前から順番に、文字コードを見て大小関係を調べているようです。
  その為、s1 の文字数が少ない場合でも文字コードが大きければ、正の値を返します。





サンプルコード
文字列「ABCD」と「ABC123」を3文字目までと、
5文字目までで比較してみます。
#include <stdio.h>
#include <string.h>

int main(void)
{
  char *s1 = "ABCD";
  char *s2 = "ABC123";
  int ret;

  printf( "%s と %s の 3文字目までの比較¥n", s1, s2 );
  ret = strncmp( s1, s2, 3 );
  if( ret == 0 ){
    printf( "文字列が一致しました¥n" );
  }
  else{
    printf( "文字列が異なります¥n" );
  }

  printf( "%s と %s の 5文字目までの比較¥n", s1, s2 );
  ret = strncmp( s1, s2, 5 );
  if( ret == 0 ){
    printf( "文字列が一致しました¥n" );
  }
  else{
    printf( "文字列が異なります¥n" );
  }

  return 0;
}



結果
ABCD と ABC123 の 3文字目までの比較
文字列が一致しました
ABCD と ABC123 の 5文字目までの比較
文字列が異なります
と、表示されます。

キッチリ3文字目までと、5文字目までで結果が違うのが分かります。

カテゴリ:C言語 string.h | 23:00 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

トラックバック機能は終了しました。

トラックバック