auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語でstrcmpを使う

auです。
前回はstrcmpについて書きました。
今回は実際に使ってみようと思います。
strcmpは文字を比較し、同じ値ならば0、違った値ならば文字コードを比較して+か-の値を返します。

文字コードとは

それぞれの文字に振られている番号です。
例えば、cとdの文字コードを見てみます。

printf("cの文字コード: %d\n", 'c');
printf("dの文字コード: %d\n", 'd');
// 実行結果
cの文字コード: 99
dの文字コード: 100

このように、それぞれの文字には数字が振られていて、strcmpはこの値を比較します。

strcmpの記述

strcmpは以下のように記述します。

strcmp(str1, str2)==0

==0は、一致していた場合、ということになります。
実際にプログラムを組んでみます。

#include <stdio.h>

int main(void) {
    char str1[10] = "abcde";
    char str2[10] = "abdce";
    char str3[10] = "abcde";

    if (strcmp(str1, str2) == 0) {  /* もしstr1とstr2が一致していた場合*/
        printf("%d\n", strcmp(str1, str2));
        printf("str1とstr2の値は一緒です(一致している)\n");
    } else {
        printf("%d\n", strcmp(str1, str2));
        printf("str1とstr2は違う値です\n");
    }
    if (strcmp(str1, str3) == 0) {
        printf("%d\n", strcmp(str1, str3));
        printf("str1とstr2の値は一緒です(一致している)\n");
    } else {
        printf("%d\n", strcmp(str1, str3));
        printf("str1とstr2は違う値です\n");
    }
    return 0;
}

// 実行結果
-1 // c - d = 1
str1とstr2は違う値です
0
str1とstr2の値は一緒です(一致している)

strcmpでは、途中で文字コードが違った場合(上のプログラムの場合str1の3番目のcの部分とstr2の3番目のdの部分)の文字コードを比較します。
なので、c-d=-1とでるわけです。