【第1部】C言語(K&R検証)編
0020.文字列を逆順にする
ソース紹介
CPPファイルに記述
#include <iostream>
#include <cstdio>
using namespace std;
/*
文字列sを逆順にする
*/
void reverse(char s[]) {
for (int i = 0,j = (int)strlen(s) - 1; i < j; i++, j--) {
char c = s[i];
s[i] = s[j];
s[j] = c;
}
}
/*
文字列を逆順にするテスト
*/
int main()
{
char str[] = "hello world";
reverse(str);
cout << str << endl;
return 0;
}
出力
サンプル説明
このサンプルは昇順に配列の添え字を追いかける
i と、降順に追いかける
j が
i < jの条件で、それぞれの指す文字の交換を行うことで
reverseを処理します。
, (コンマ)で区切ることで、複数の処理を並列処理のように実行できます。
ソース紹介
C++の
reverseアルゴリズムを使うと
reverse()関数は必要なくなります。
CPPファイルに記述
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
using namespace std;
/*
文字列を逆順にするテスト
*/
int main()
{
string str = "hello world";
reverse(str.begin(), str.end());
cout << str << endl;
return 0;
}
サンプル説明
ここでは
reverseアルゴリズムを使用しています。文字列に限らず、このアルゴリズムは、配列などを逆順にします。
K&Rでの記述
元になったのは
第3章:制御の流れに記述されています。
ループの説明のところです。