char *my_strright(const char *src, int n)
{
const int len = strlen(src);
n = std::min(n, len); // src 文字数、n の小さい方を n に代入
char *dst = new char[n + 1]; // メモリ確保
src += len - n; // src をコピー開始位置に合わせる
for(int i = 0; i < n; ++i ) {
*dst++ = *src++; // 文字コピー
}
*dst = '\0'; // 終端記号のヌル文字を忘れずに
return dst - n; // dst は n だけ進んでいるので、n を引いたアドレスを返す
}
解説:
char *my_strright(const char *src, int n)
{
const int len = strlen(src);
n = std::min(n, len); // src 文字数、n の小さい方を n に代入
char *dst = new char[n+1]; // メモリ確保
char *dst0 = dst; // 先頭アドレスを保存
src += len - n;
while( (*dst++ = *src++) != '\0' ) {// ヌル文字までコピー
}
return dst0; // アロケートしたアドレスを返す
}
前: | 次: