C/C++ ポインタ入門 > 文字列関数 > pop_nth
Nobuhide Tsuda
Nov-2013
文字列先頭の文字を取り出す:char my_pop_nth(char *str, int n)
char my_pop_nth(char *str, int n)
{
int len = strlen(str);
if( n < 0 || n >= len ) {
return '\0'; // n が範囲外の場合は、単に '\0' を返す
}
str += n;
char c = *str;
while( (*str = *(str+1)) != '\0' ) { // ヌル文字('\0')までひとつ前にずらす
++str; // ポインタを前に進める
}
return c; // 最初の文字を返す
}
解説:
- はじめに、strlen() を使って、文字列 str の文字数を len に代入します。
- n がマイナスまたは len 以上の場合は、削除位置が不正なので、単に '\0' を返します。
- str に n を加えることで、str が削除する文字を指すようにします。
- 関数が返す値として n 番目の文字を c に保存します。
- 最初の文字がヌル文字('\0')でない場合は、while 文で文字列の文字を1文字ずつ前にずらします。
- さいごに、保存しておいた文字 c を関数の値として返します。
前:
| 次: