【C言語】メモリを比較するmemcmp関数の使い方を詳しく解説

目次から探す

memcmp関数の注意点

memcmp関数は、C言語の標準ライブラリ関数の一つであり、2つのメモリ領域を比較するために使用されます。

しかし、使用する際にはいくつかの注意点があります。

  1. メモリ領域の比較はバイト単位で行われる

メモリ領域の比較はバイト単位で行われるため、比較対象のデータがバイト単位で等しいかどうかを判定します。

そのため、文字列の比較などで使用する場合は、文字列の終端を示すヌル文字(‘\0’)が含まれていることを確認する必要があります。

  1. memcmp関数は、比較対象のメモリ領域の先頭アドレスとサイズを引数として受け取る

memcmp関数は、比較対象のメモリ領域の先頭アドレスとサイズを引数として受け取ります。

そのため、正しいアドレスとサイズを指定する必要があります。

アドレスやサイズが不正な場合、予期しない結果が返される可能性があります。

  1. memcmp関数は、比較対象のメモリ領域の内容が等しい場合には0を返します。

一方、内容が異なる場合には0以外の値を返します。

この値は、比較対象のメモリ領域の差分を示す符号付き整数です。

ただし、具体的な値は規定されていません。

  1. memcmp関数は、比較対象のメモリ領域の内容が等しいかどうかを判定するだけであり、大小関係を判定する機能はありません。

大小関係を判定する場合には、別の関数(例えば、strcmp関数)を使用する必要があります。

以下に、memcmp関数の使用例を示します。


#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Hello";
    char str2[] = "Hello";
    char str3[] = "World";
    int result1 = memcmp(str1, str2, sizeof(str1));
    int result2 = memcmp(str1, str3, sizeof(str1));
    printf("Result 1: %d\n", result1);
    printf("Result 2: %d\n", result2);
    return 0;
}

上記のコードでは、3つの文字列を比較しています。

str1とstr2は内容が等しいため、memcmp関数は0を返します。

一方、str1とstr3は内容が異なるため、memcmp関数は0以外の値を返します。

実行結果は以下の通りです。

Result 1: 0
Result 2: -15

以上がmemcmp関数の注意点についての説明です。

これらの注意点を理解し、適切に使用することで、メモリ領域の比較を正確に行うことができます。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す