2017年10月01日
《その59》 ポインタ利用による文字列の逆順表示(p.314演習8-8)
新版明解C++入門編 p.314 演習8-8
文字列 s 内の文字を末尾から先頭へと逆順に表示する関数 put_rev を作成せよ。
void put_rev(const char* s);たとえば、文字列 s が "abc" であれば、「cba」と表示する。
【プログラムの仕様】
◆ スペース文字も含めた文字列を、キーボードから char str[128] に読み込む。
( cin.getline(str, 128) を利用 )
◆ 文字列の先頭要素へのポインタを引数 s に受け取り、*s == 0 になるまで
s をインクリメントすることによって 文字数 n を求める。
while(*s) {
n++;
s++;
}
◆ 逆に s を n回デクリメントしながら *s を表示する(結果として逆順表示となる)。
for (int i = 0; i < n; i++) {
cout << *--s;
}
// p314_演習8-8
#include <iostream>
using namespace std;
void put_rev(const char* s)
{
int n = 0;
while (*s)
n++, s++;
for (int i = 0; i < n; i++) {
cout << *--s;
}
}
int main()
{
char str[128];
cout << "文字列を入力 : "; cin.getline(str, 128);
cout << "逆順に表示 : "; put_rev(str);
cout << '\n';
}
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6761570
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック