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