文字列を比較する(strcmp)

strcmpとは

引数の文字列を比較して等しい場合は0,等しくない場合はマイナスの値,プラスの値を出力する(条件がある)関数.
返す値は実行環境の文字コードの値によって

  • 第1引数 < 第2引数 の場合はマイナスの値
  • 第1引数 > 第2引数 の場合はプラスの値
  • 第1引数 = 第2引数 の場合は0
    を返します.
    文字コードの値は大文字と小文字で異なり,小文字の方が大文字よりも大きな値をとります.

使用方法

形式

#include<string.h>
int strcmp(const char *s1,const char *s2);

string関数は上記のような形式をしており,まずはじめに #include<string.h>
を用いてヘッダファイルを読み込む必要があります.
strcmp関数は,引数として比較したい文字列を渡す必要があり,それぞれ比較したい文字列のchar型オプジェクトのポインタの定数値をとります.

使用例

#include<stdio.h>
#include<string.h> //strcmp、strncmp関数を使うために必要
 
int main(void)
{
  char *s1 = "SAMURAI";
  char *s2 = "samurai";
  char *s3 = "samurai";
  char *s4 = "samurao";
  
  //s1(SAMURAI)とs2(samurai)が同じ値かどうか
  if(strcmp(s1,s2)==0){
    printf("s1(=SAMURAI)とs2(=samurai)は同じ値です。\n");
  }else{
    printf("s1(=SAMURAI)とs2(=samurai)は同じ値ではありません。\n");
  }
  
  //s2(samurai)とs3(samurai)が同じ値かどうか
  if(strcmp(s2,s3)==0){
    printf("s2(=samurai)とs3(=samurai)は同じ値です。\n");
  }else{
    printf("s2(=samurai)とs3(=samurai)は同じ値ではありません。\n");
  }
  
  //s3(samurai)とs4(samurao)が同じ値かどうか
  if(strcmp(s3,s4)==0){
    printf("s3(=samurai)とs4(=samurao)は同じ値です。\n");
    
  }else{
    printf("s3(=samurai)とs4(=samurao)は同じ値ではありません。\n");
  }
  
  //s3(samurai)とs4(samurao)の比較
  printf("第1引数 < 第2引数の場合 %d\n",strcmp(s3, s4));
  printf("第1引数 > 第2引数の場合  %d\n",strcmp(s4, s3));
  printf("第1引数 = 第2引数の場合  %d\n",strcmp(s3, s3));
  
  return 0;
}

出力結果

s1(=SAMURAI)とs2(=samurai)は同じ値ではありません。
s2(=samurai)とs3(=samurai)は同じ値です。
s3(=samurai)とs4(=samurao)は同じ値ではありません。
第1引数 < 第2引数の場合 -6
第1引数 > 第2引数の場合  6
第1引数 = 第2引数の場合  0

上記の例ではS1,S2,S3,S4までそれぞれ"SAMURAI","samurai","samurai","samurai"という文字列を用意し比較しています.