C/C++ ポインタ入門 > 文字列関数 > push_nth
Nobuhide Tsuda
Nov-2013
文字列 n 番目に文字を追加:void my_push_nth(char *str, int n, char c)
#include <string.h> // for strlen
void my_push_nth(char *str, int n, char c)
{
const int len = strlen(str);
if( n < 0 ) {
n = 0;
} else if( n > len ) {
n = len;
}
for(int i = len; i >= n; --i) { // 終端ヌル文字から n 番目の文字までループ
str[i+1] = str[i]; // 文字列を1文字後ろにずらす
}
str[n] = c; // n 番目に1文字挿入
}
解説:
- 最初に str が指す文字列の文字数を strlen() で計算し、len に代入します。
- n がマイナスの場合は 0 に、len より大きい場合は len を n に代入します。
- 終端記号の方から先頭に向かって n 番目の文字まで、文字を1文字ずつ後ろにずらします。
- ずらし終わったら、n 番目の位置に文字 c を書き込みます。
- 重要なのは、文字をずらすのは文字列の後ろから順にずらすという点です。
- 前から単純にずらすと結果が不正になります。
前:
| 次: