C/C++ ポインタ入門 > 文字列関数 > maxcharptr
Nobuhide Tsuda
Nov-2013
最大文字へのポインタを返す:char *my_maxcharptr(const char *str)
const char *my_maxcharptr(const char *str)
{
char max = '\0';
const char *ptr = 0; // 最大文字へのポインタ
char ch;
while( (ch = *str++) != '\0' ) {
if( ch > max ) {
max = ch;
ptr = str - 1; // str はひとつ前に進んでいるので str - 1 を ptr に設定
}
}
return ptr;
}
解説:
- 処理は前問の maxchar とほぼ同じです。
- 違うのは最大文字位置を覚えておくポインタ ptr を用意しておく点です。
- str が空文字を指していた場合は ptr の初期値をそのまま返すので、ptr は 0 で初期化しておきます。
- あとは、max より大きい文字を見つけた場合は、そのアドレスを ptr に格納し、最後に ptr を返します。
- while 文でポインタをポイスとインクリメントしているので、ptr には str ではなく str - 1 を代入します。
前:
| 次: