memrootじしょ
英和翻訳
memcmp
C language
Safe CRT
memmove
strncat
Public Funding
memcmp
/ˈmɛmkɒmp/
メムコンプ
1.
指定された長さの二つのメモリ領域をバイト単位で比較します。
C言語の標準ライブラリ関数の一つで、`void *s1`, `const void *s2`, `size_t n` を引数にとります。`s1`が指すメモリ領域と`s2`が指すメモリ領域の最初の`n`バイトをバイト単位で比較し、その結果を整数で返します。`s1`の内容が`s2`より小さい場合は負の値、等しい場合は0、大きい場合は正の値を返します。
int
main()
{
char
buf1[]
=
"hello";
char
buf2[]
=
"hello";
if
(memcmp(buf1,
buf2,
5)
==
0)
{
printf("Buffers
are
identical.\n");
}
return
0;
}
(int main() { char buf1[] = "hello"; char buf2[] = "hello"; if (memcmp(buf1, buf2, 5) == 0) { printf("バッファは同一です。\n"); } return 0; })
memcmp(buf1, buf2, 5)
`buf1`と`buf2`の先頭5バイトを比較します。
== 0
比較結果が0(等しい)であるかを確認します。
printf("Buffers are identical.\n")
「バッファは同一です。」と出力します。
char
data1[]
=
{0x01,
0x02,
0x03};
char
data2[]
=
{0x01,
0x02,
0x04};
if
(memcmp(data1,
data2,
3)
<
0)
{
printf("data1
is
less
than
data2.\n");
}
(char data1[] = {0x01, 0x02, 0x03}; char data2[] = {0x01, 0x02, 0x04}; if (memcmp(data1, data2, 3) < 0) { printf("data1はdata2より小さいです。\n"); })
memcmp(data1, data2, 3)
`data1`と`data2`の先頭3バイトを比較します。
< 0
比較結果が負の値(`data1`が`data2`より小さい)であるかを確認します。
printf("data1 is less than data2.\n")
「data1はdata2より小さいです。」と出力します。
unsigned
char
a[]
=
{
'A',
'B',
'C'
};
unsigned
char
b[]
=
{
'A',
'B',
'D'
};
int
result
=
memcmp(a,
b,
sizeof(a));
if
(result
<
0)
{
printf("a
<
b\n");
}
else
if
(result
>
0)
{
printf("a
>
b\n");
}
else
{
printf("a
==
b\n");
}
(unsigned char a[] = { 'A', 'B', 'C' }; unsigned char b[] = { 'A', 'B', 'D' }; int result = memcmp(a, b, sizeof(a)); if (result < 0) { printf("a < b\n"); } else if (result > 0) { printf("a > b\n"); } else { printf("a == b\n"); })
memcmp(a, b, sizeof(a))
配列`a`と`b`を`a`のサイズ(この場合は3バイト)で比較します。
int result = ...
比較結果を`result`変数に格納します。
if (result < 0)
`result`が負の値(`a`が`b`より小さい)であるかをチェックします。
関連
memcpy
memset
memmove
strcmp
strncmp
strlen
malloc