|
|
|
| 2008/10/07 11:47||▲
|
|
|
標準Cライブラリには文字列を比較するための関数がいくつか用意されていますが、今回はナル終端文字列を単純比較するためのstrcmp関数を取り上げます。
strcmp関数は、二つの文字列を先頭から順に比較し、文字が異なるか、ナル文字に達した時点で比較を終えます。そして、最後の文字どうしを比べて、第1引数の方が大きければ正の値を、第2引数の方が大きければ負の値を、等しければ0を返します。
このように単純な仕様の関数ですが、一点だけ注意すべきなのは、文字の比較は、unsigned char型として行わなければならない点です。これらを踏まえると、実装は次のようになります。
#include <stddef.h>
int strcmp(const char *s1, const char *s2) { register const unsigned char *ss1, *ss2; for (ss1 = (const unsigned char*)s1, ss2 = (const unsigned char*)s2; *ss1 == *ss2 && *ss1 != '\0'; ss1++, ss2++) ; return *ss1 - *ss2; }
strcpy関数やstrlen関数と比べるとやや煩雑になりましたが、それでもこの程度です。
|
| 2006/03/03 20:46|文字列操作|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/33-7efa9174
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|