C言語 バッファ同士のデータを比較 - string.h - [ memcmp ]

2008.11.23 Sunday | by LRESULT


ッファ同士のデータを比較するには、memcmp()を使います。

strncmp()のバッファ版といったところです。
つまり、文字列の比較ではなく、データの比較というわけです。


memcmp
書式 int memcmp( const void *s1, const void *s2, size_t n )
機能 バッファ同士のデータを比較
引数 const void *s1 : 比較するバッファ
const void *s2 : 比較するバッファ
size_t n : 比較するバイト数
戻り値 s1 < s2 : 負の値
s1 = s2 : 0
s1 > s2 : 正の値

大小関係はデータのバイナリ値から判定しているようです。





サンプルコード
int型の配列(バッファ)「1,2,3,4,5,6,7,8,9」と
「1,2,3,4,5,9,8,7,6」のバッファ同士のデータ比較をしてみます。
#include <stdio.h>
#include <string.h>

int main(void)
{
  int s1[] = {1,2,3,4,5,6,7,8,9};
  int s2[] = {1,2,3,4,5,9,8,7,6};
  int ret;

  ret = memcmp( s1, s2, sizeof(int) * 5 );
  printf( "比較結果:%d¥n", ret );

  return 0;
}



結果
比較結果:0
と、表示されます。

memcmp()やmemchr()等は、引数がvoid*型の為
文字列限定というわけでなく、配列同士の比較などにも使えるわけです。

ちなみに、int型配列なので、コピーするには
sizeof()でバイト数を取得する必要があります。

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


コメントする











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

http://simd.jugem.jp/trackback/141

トラックバック