C/C++ ポインタ入門 > 文字列関数 > str_rot_right
Nobuhide Tsuda
Nov-2013
文字列を右にローテイト(回転):void my_str_rot_right(char *str)
void my_str_rot_right(char *str)
{
int len = strlen(str);
if( len <= 1 ) {
return;
}
char c = str[len-1];
for(int i = len - 1; i > 0; --i) {
str[i] = str[i-1];
}
str[0] = c;
}
解説:
- 最初に文字列の長さを strlen() で計算し len に代入します。
- len が 1 以下の場合は、何もする必要がないので、直ぐにリターンします。
- 最後の文字を c に保存しておきます。
- 文字数 - 1 回ループし、
- 文字を末尾から1文字ずつ後ろにずらします。
- 文字列の先頭に、保存しておいた末尾文字を格納します。
- 文字を1文字後ろにずらすという処理は push_front と同じです。
- push_front の場合は、ヌル文字から移動してましたが、rot_left の場合はヌル文字は移動する必要が無いことに注意してください。
前:
| 次: