|
|
|
| 2008/10/07 11:40||▲
|
|
|
strspn関数は、strcspn関数とよく似ていますが、条件が逆になります。すなわち、指定した文字群の文字だけで構成される先頭部分の長さを求めます。言い換えれば、指定した文字群に含まれない文字が最初に現れた位置の添え字を返します。
機能は似ているのですが、実現方法はstrcspn関数とは結構違います。実装を見てみましょう。
#include <stddef.h>
size_t strspn(const char *s1, const char *s2) { register const char *ss1 = s1, *ss2; if (*s2 != '\0') { for (register int c; (c = *ss1) != '\0'; ss1++) { for (ss2 = s2; *ss2 != '\0'; ss2++) if (c == *ss2) break; if (*ss2 == '\0') break; } } return ss1 - s1; }
strcspn関数では、s1文字列の各文字が、s2文字列のどれかと一致した時点で即ループを抜ければよかったのですが、strspn関数では、s2文字列のどの文字とも一致しないことを確認しなければなりません。そのため、やや条件判定が複雑になっています。
|
| 2006/05/03 12:06|文字列操作|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/47-7fe6b179
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|