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

🔧 文字列 ・ string.h ・ C89

strcmp の使い方

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

書式

int strcmp(const char *s1, const char *s2);

どんな関数か

2つの文字列を辞書順に比較する。等しければ0、s1がs2より小さければ負、大きければ正を返す。文字列の内容比較には==ではなく必ずこの関数を使う必要がある。 大文字小文字を区別せずに比較したい場合はstricmpや自前でtolowerを併用する必要がある。

使用例

#include <stdio.h>
#include <string.h>
int main(void) {
    if (strcmp("abc", "abc") == 0) {
        puts("equal");
    }
    return 0;
}

つまずきやすい注意点

⚠️ if (s1 == s2)と書くとポインタ同士の比較になり、内容が同じでも別々の領域にあれば偽になる典型的な初心者ミス。

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

strcmp と一緒に使う関数

strncmp先頭から最大n文字だけを比較するstrcmpの派生版。プレフィックス一致の判定や、固定長フィールドの比較などによく使われ… strlen文字列の終端\0を除いた文字数(バイト数)を返す。文字列の長さ分だけ先頭から走査するためO(n)であり、ループの条件式な…

この関数が出てくる解説

文字列リテラルと初期化文字列の初期化の書き方を使い分け、代入できない理由を説明できる string.h の主要関数strlen・strcpy・strcat・strcmp の役割と使い方を説明できる

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

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

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

完全版(BOOTH)を見る