//思路方法
//首先:通过输入一行汉字,我是小萌新。
// [我 是 小 萌 新]
// [新 萌 小 是 我] 在这通过数组进行顺序调换。
#include <iostream>
#include <stdlib.h>
using namespace std;
void reverse(unsigned char* s) {
int len = strlen((char*)s);//len 是字符串的长度
unsigned char tmp[1024];//为了更好理解定义一个临时数组;
// 原来数组[我是小萌新]
//临时数组 tmp [萌新小是我]
//p2->tmp p2指向第是一个字符
//
unsigned char* p1 = s;
unsigned char* p2 = tmp + len;
*p2-- = 0;//后置第是一个字节
while (*p1) {
if (*p1 < 0x80) { //ASCII 字符 一般都是小于等于127;
*p2-- = *p1++;
}
else {
*(p2 - 1) = *p1++;
*p2 = *p1++;
p2 -= 2;
}
}
for (int i = 0; i < len; i++) {
s[i] = tmp[i];
}
}/这里是实现逆转的方法过程
int main(void) {
unsigned char str[] = "我是小萌新" ;//我是小萌新,每个汉字占两个字节,两个字节一个整体
reverse(str);
cout << str << endl;
system("pause");
return 0;
}