C言語 バッファ同士のデータを比較 - string.h - [ memcmp ]
2008.11.23 Sunday | by LRESULT
バッファ同士のデータを比較するには、memcmp()を使います。
strncmp()のバッファ版といったところです。
つまり、文字列の比較ではなく、データの比較というわけです。
書式 | 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()でバイト数を取得する必要があります。 |