不用c++ reverse函数的解法:(常规char数组方法)

注意!尾指针指到字符数组最后一位是'\0',并不是有效字符, 此时,尾指针q需要回退一位。

#include <algorithm>
#include <iostream>
using namespace std;
#define N 201
void Myreverse(char str[]){
    char *p = str;  //头指针
    char *q = str;  //尾指针
    char temp;
    while (*q != '\0'){ //指到数组末尾'\0'
        q++;
    }
    q--;	//要指到字符数组的有效字符的最后一位,所以要从'\0'位回退一位
    while (p < q){
	  //交换
        temp = *q;
        *q = *p;
        *p = temp;
	  //移动指针
        p++;
        q--;
    }
}
int main() {
    char str[N];
    while (cin >> str) { // 注意 while 处理多个 case
        Myreverse(str);
        cout << str << endl;
    }
}
// 64 位输出请用 printf("%lld")