【C言語】2つの文字列が一致してるか比較する方法を解説

文字列の比較方法には、strcmp関数strncmp関数を使う方法、または自作関数を使う方法があります。

この記事では、C言語で2つの文字列を比較する方法と注意点について解説します。

目次から探す

文字列の比較方法

文字列を比較する方法にはいくつかの方法があります。

ここでは、C言語でよく使われる3つの方法を紹介します。

strcmp関数を使った比較

strcmp関数は、2つの文字列を比較するために使用されます。

この関数は、引数として2つの文字列を受け取り、比較結果を整数値として返します。

#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Hello";
    char str2[] = "World";
    int result = strcmp(str1, str2);
    if (result == 0) {
        printf("文字列は一致しています\n");
    } else {
        printf("文字列は一致していません\n");
    }
    return 0;
}

上記の例では、strcmp関数を使用してstr1str2の文字列を比較しています。

strcmp関数は、2つの文字列が一致している場合には0を返し、一致していない場合には0以外の値を返します。

strncmp関数を使った比較

strncmp関数は、指定した文字数までの部分文字列を比較するために使用されます。

この関数もstrcmp関数と同様に、引数として2つの文字列を受け取り、比較結果を整数値として返します。

#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Hello";
    char str2[] = "Hell";
    int result = strncmp(str1, str2, 4);
    if (result == 0) {
        printf("文字列は一致しています\n");
    } else {
        printf("文字列は一致していません\n");
    }
    return 0;
}

上記の例では、strncmp関数を使用してstr1str2の最初の4文字を比較しています。

strncmp関数は、指定した文字数までの部分文字列が一致している場合には0を返し、一致していない場合には0以外の値を返します。

自作関数を使った比較

C言語では、自分で文字列比較の関数を作成することもできます。

以下は、簡単な自作関数の例です。

#include <stdio.h>
int my_strcmp(const char* str1, const char* str2) {
    while (*str1 && (*str1 == *str2)) {
        str1++;
        str2++;
    }
    return *(unsigned char*)str1 - *(unsigned char*)str2;
}
int main() {
    char str1[] = "Hello";
    char str2[] = "World";
    int result = my_strcmp(str1, str2);
    if (result == 0) {
        printf("文字列は一致しています\n");
    } else {
        printf("文字列は一致していません\n");
    }
    return 0;
}

上記の例では、my_strcmpという自作関数を使用してstr1str2の文字列を比較しています。

自作関数では、ポインタを使用して文字列を比較し、一致している場合には0を返し、一致していない場合には0以外の値を返します。

1 2
目次から探す