[C言語]strcmpを使わないで文字列を比較する!基本的なチェック方法についても

画像C言語
広告

C言語において、文字列を比較する方法にはいくつかのアプローチがあります。

ここでは、strcmpを使わないで文字列を比較する方法と、strcmpを使った比較方法について解説します。

これにより、異なるアプローチを理解し、柔軟に文字列比較を行うスキルを身につけましょう。

広告

strcmpを使わないで文字列を比較する

C言語では、文字列は文字の配列として扱われます。

そのため、配列同士を比較することで文字列の等値性を判定できます。

以下はその一例です。

#include<stdio.h>

// 文字列を比較する関数
int compareStrings(const char *str1, const char *str2) {
    // インデックスを用いて文字を比較
    while (*str1 != '
#include<stdio.h>

// 文字列を比較する関数
int compareStrings(const char *str1, const char *str2) {
    // インデックスを用いて文字を比較
    while (*str1 != '\0' && *str2 != '\0') {
        if (*str1 != *str2) {
            return 0; // 異なる文字が見つかったら不一致
        }

        // 次の文字を比較
        ++str1;
        ++str2;
    }

    // どちらかの文字列が終端に達しているか確認
    return (*str1 == '\0' && *str2 == '\0');
}

int main() {
    // 文字列を比較
    if (compareStrings("hello", "world")) {
        printf("文字列は等しいです。\n");
    } else {
        printf("文字列は異なります。\n");
    }

    return 0;
}
' && *str2 != '
#include<stdio.h>

// 文字列を比較する関数
int compareStrings(const char *str1, const char *str2) {
    // インデックスを用いて文字を比較
    while (*str1 != '\0' && *str2 != '\0') {
        if (*str1 != *str2) {
            return 0; // 異なる文字が見つかったら不一致
        }

        // 次の文字を比較
        ++str1;
        ++str2;
    }

    // どちらかの文字列が終端に達しているか確認
    return (*str1 == '\0' && *str2 == '\0');
}

int main() {
    // 文字列を比較
    if (compareStrings("hello", "world")) {
        printf("文字列は等しいです。\n");
    } else {
        printf("文字列は異なります。\n");
    }

    return 0;
}
') { if (*str1 != *str2) { return 0; // 異なる文字が見つかったら不一致 } // 次の文字を比較 ++str1; ++str2; } // どちらかの文字列が終端に達しているか確認 return (*str1 == '
#include<stdio.h>

// 文字列を比較する関数
int compareStrings(const char *str1, const char *str2) {
    // インデックスを用いて文字を比較
    while (*str1 != '\0' && *str2 != '\0') {
        if (*str1 != *str2) {
            return 0; // 異なる文字が見つかったら不一致
        }

        // 次の文字を比較
        ++str1;
        ++str2;
    }

    // どちらかの文字列が終端に達しているか確認
    return (*str1 == '\0' && *str2 == '\0');
}

int main() {
    // 文字列を比較
    if (compareStrings("hello", "world")) {
        printf("文字列は等しいです。\n");
    } else {
        printf("文字列は異なります。\n");
    }

    return 0;
}
' && *str2 == '
#include<stdio.h>

// 文字列を比較する関数
int compareStrings(const char *str1, const char *str2) {
    // インデックスを用いて文字を比較
    while (*str1 != '\0' && *str2 != '\0') {
        if (*str1 != *str2) {
            return 0; // 異なる文字が見つかったら不一致
        }

        // 次の文字を比較
        ++str1;
        ++str2;
    }

    // どちらかの文字列が終端に達しているか確認
    return (*str1 == '\0' && *str2 == '\0');
}

int main() {
    // 文字列を比較
    if (compareStrings("hello", "world")) {
        printf("文字列は等しいです。\n");
    } else {
        printf("文字列は異なります。\n");
    }

    return 0;
}
'); } int main() { // 文字列を比較 if (compareStrings("hello", "world")) { printf("文字列は等しいです。\n"); } else { printf("文字列は異なります。\n"); } return 0; }

この方法では、文字列をそれぞれの文字が一致するかどうかを順番に比較します。

異なる文字が見つかれば不一致と判定します。

文字列をstrcmpを使ってチェックする

C言語標準ライブラリには文字列比較のための関数 strcmp が用意されています。

これを使用すると、より簡潔に文字列を比較できます。

#include <stdio.h> 
#include <string.h>

int main() {
    // strcmpを使って文字列を比較
    if (strcmp("hello", "world") == 0) {
        printf("文字列は等しいです。\n");
    } else {
        printf("文字列は異なります。\n");
    }

    return 0;
}

strcmpは、比較対象の文字列が等しい場合には0を、異なる場合には0以外の値を返します。

まとめ

C言語において文字列を比較するには、strcmp以外にも様々な方法が存在します。

strcmpを使わない方法では、文字列を配列として扱い、各文字を順番に比較します。

一方で、strcmpを使うと簡潔に文字列の等値性を判定できます。

どちらの方法も理解しておくと、状況に応じて柔軟に対応できるようになります。

タイトルとURLをコピーしました