C言語 文字列の比較(一致判定) - string.h - [ strcmp ]
2008.11.12 Wednesday | by LRESULT
文字列の比較をするには、strcmp()を使用します。
書式 | int strcmp( const char *s1, const char *s2 ) |
---|---|
機能 | 文字列の比較 |
引数 | const char *s1 : 比較する文字列 const char *s2 : 比較する文字列 |
戻り値 | s1 < s2 : 負の値 s1 = s2 : 0 s1 > s2 : 正の値 |
※ 2つの文字列が一致するかどうかの判定に、よく使われます。
※ 処理系により異なるらしいのですが、
基本的には前から順番に、文字コードを見て大小関係を調べているようです。
その為、s1 の文字数が少ない場合でも文字コードが大きければ、正の値を返します。
※ 文字数の指定が出来るstrncmp()については、こちら。
文字列「abc」と「abc」を比較し、文字列「abc」と「ABC」を比較してみます。 |
---|
#include <stdio.h> #include <string.h> int main(void) { char *s1 = "abc"; char *s2 = "abc"; char *s3 = "ABC"; int ret; printf( "%s と %s の比較¥n", s1, s2 ); ret = strcmp( s1, s2 ); if( ret == 0 ){ printf( "文字列が一致しました¥n" ); } else{ printf( "文字列が異なります¥n" ); } printf( "%s と %s の比較¥n", s1, s3 ); ret = strcmp( s1, s3 ); if( ret == 0 ){ printf( "文字列が一致しました¥n" ); } else{ printf( "文字列が異なります¥n" ); } return 0; } |
abc と abc の比較 文字列が一致しました abc と ABC の比較 文字列が異なります |
---|
と、表示されます。 手軽に比較出来るので便利です。 これを知らないと for文で1文字ずつ判定するという手間が掛かります。 |