一日一コード 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;
}
コード次第は簡単だけれどもここで重大な注意が一つ。