[B]大衣装の理解度チェック4 独習C++



//NOTE
//------------------------------------------------------------------------>
// Title      : 第一章の理解度チェック5
//------------------------------------------------------------------------>
// Author     : Yuhei Tsukahara
// Make       : 2012/08/16
// Finish     : 2012/08/16
// LastSave   : 2012/08/16
//------------------------------------------------------------------------>
/* Abstruct   :
文字列を逆数にするrev_str()という名前の関数を作成しなさい。
rev_str()関数をオーバーロードし、
引数として文字列を1つでも2つでも渡すことができるようにしなさい。
文字列を1つ指定して呼び出した場合は、その文字列に逆順の文字列を格納します。
文字列を2つ指定して呼び出した場合は、2つめの引数に逆順の文字列を返します。
//------------------------------------------------------------------------>*/

#include<iostream>
#include<string.h>
using namespace std;

#define CHAR_NUM 80

void rev_str( char *s1 ,char *s2){

int cnt = 0;

while( *(s1 + cnt) != '\0' ){
cnt ++ ;
}

for( int i = 0; i < cnt ; i++ ){
*(s2 + cnt - 1 - i ) = *(s1 + i );
}
*(s2 + cnt) = '\0';
}

void rev_str( char *s1 ){

char s2[CHAR_NUM];

rev_str( s1 , s2 );

strcpy( s1 , s2 );
}

int main( int argc , char *argv[]){

char s1[CHAR_NUM],s2[CHAR_NUM] , s3[CHAR_NUM];

strcpy( s1 , "hello");
strcpy( s3 , s1 );

rev_str( s1 , s2 );
rev_str( s3 );

cout << s1 << " :[rev1]: "<< s2 <<"[rev2] " << s3;


getchar();
return 0;
}