C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス memcmp

🔧 文字列 ・ string.h ・ C89

memcmp の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

int memcmp(const void *s1, const void *s2, size_t n);

どんな関数か

メモリ領域を指定バイト数だけバイト単位で比較する。構造体や配列全体が等しいかどうかを一括で調べたい時に使われる、文字列以外にも使える汎用比較関数。 バイナリファイルの一致確認やハッシュ値の比較など、内容そのものの一致を厳密に調べたい時に使う。

使用例

#include <string.h>
#include <stdio.h>
int main(void) {
    int a[3] = {1, 2, 3};
    int b[3] = {1, 2, 3};
    if (memcmp(a, b, sizeof a) == 0) puts("same");
    return 0;
}

つまずきやすい注意点

⚠️ 構造体をmemcmpで比較すると、パディング領域の不定値の違いで意図せず不一致になることがある。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

memcmp と一緒に使う関数

strcmp2つの文字列を辞書順に比較する。等しければ0、s1がs2より小さければ負、大きければ正を返す。文字列の内容比較には==で… memcpyメモリ領域を指定バイト数だけコピーする。文字列に限らずあらゆるデータのコピーに使えstrcpyより高速だが、終端\0の概…

同じ分類(文字列)の関数

memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る