文字列を比較する(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"という文字列を用意し比較しています.