C言語 文字数を指定した文字列の比較(一致判定) - string.h - [ strncmp ]
2008.11.14 Friday | by LRESULT
文字数を指定した文字列の比較には、strncmp()を使います。
書式 | int strncmp( const char *s1, const char *s2, size_t n ) |
---|---|
機能 | 文字数を指定した文字列の比較 |
引数 | const char *s1 : 比較する文字列 const char *s2 : 比較する文字列 size_t n : 比較する先頭からの文字数 |
戻り値 | s1 < s2 : 負の値 s1 = s2 : 0 s1 > s2 : 正の値 |
※ 「¥0」までが比較対象となります。
※ 2つの文字列が一致するかどうかの判定に、よく使われます。
※ 処理系により異なるらしいのですが、
基本的には前から順番に、文字コードを見て大小関係を調べているようです。
その為、s1 の文字数が少ない場合でも文字コードが大きければ、正の値を返します。
文字列「ABCD」と「ABC123」を3文字目までと、 5文字目までで比較してみます。 |
---|
#include <stdio.h> #include <string.h> int main(void) { char *s1 = "ABCD"; char *s2 = "ABC123"; int ret; printf( "%s と %s の 3文字目までの比較¥n", s1, s2 ); ret = strncmp( s1, s2, 3 ); if( ret == 0 ){ printf( "文字列が一致しました¥n" ); } else{ printf( "文字列が異なります¥n" ); } printf( "%s と %s の 5文字目までの比較¥n", s1, s2 ); ret = strncmp( s1, s2, 5 ); if( ret == 0 ){ printf( "文字列が一致しました¥n" ); } else{ printf( "文字列が異なります¥n" ); } return 0; } |
ABCD と ABC123 の 3文字目までの比較 文字列が一致しました ABCD と ABC123 の 5文字目までの比較 文字列が異なります |
---|
と、表示されます。 キッチリ3文字目までと、5文字目までで結果が違うのが分かります。 |