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とでるわけです。