C/C++ ポインタ入門 > 文字列関数 > strlen
Nobuhide Tsuda
Nov-2013
文字数を数える:int my_strlen(const char *str)
int my_strlen(const char *str)
{
int len = 0; // 文字数を数えるためのカウンタ
while( *str++ != '\0' ) // 終端記号('\0')を見つけるまで、ポインタを進める
++len; // 文字数インクリメント
return len; // 文字数を返す
}
// トークン数:27
解説:
- 3行目で、文字数をカウントするための変数 len を宣言し、0 に初期化している。
- C/C++ の文字列は長さ情報を持っておらず、終端にヌル文字('\0')が格納されているので、それを探索する必要がある。
- 4行目で文字列を指すポインタ str をインクリメントしつつ、ヌル文字を探す。
- ヌル文字でない場合は、5行目で文字数カウンタ len をインクリメントする。
- 終端のヌル文字('\0')を発見した場合は、文字数カウンタ len を return 文で関数の値として返す。
int my_strlen(const char *str)
{
const char *str0 = str; // 最初のポインタの位置を保存しておく
while( *str != '\0' ) // 終端記号('\0')を見つけるまで、ポインタを進める
++str;
return str - str0; // 文字数を返す
}
// トークン数:30
解説:
- 別の書き方として、文字数カウンタを使用しない書き方もある。
- 3行目で、最初のポインタの値、すなわち文字列先頭アドレスを str0 に保存しておく。
- 4、5行目のループで終端記号のヌル文字('\0')までポインタ str を進める。
- 最後に str - str0 で文字数を計算し、それを return 文で関数の値として返す。
前:
| 次: