一日一コード 1.文字列を逆にする。〜メモリ確保〜

いつまで続くかわからないけれどもとりあえず毎日コードを書くことを目指してやってみよう。
最初のお題はJoel on Softwareにあるこのお題。

  • 文字列の長さを調べる。
  • メモリを確保する。
  • 逆さになるようにコピー。
  • ゼロ終端(ASCIZ)であることに気をつける。


char *reverseString(char str[]) //引数 strを逆順にして返す関数。
{
const int length = strlen(str);
char *ret = (char*)malloc( length+1 );
ret += length+1; //バッファの一番後ろに移動。
*(ret--) = '\0'; //末尾のゼロ。

for(int i=0; i < length; i++)
{
*(ret--) = *(str++); //str[0] -> ret[end];
}
return ret;
}

コード次第は簡単だけれどもここで重大な注意が一つ。

戻り値をちゃんと解放するように。以上。

まとめページ。