//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;
}