设指针p1指向初始字符串s,再新建一个字符串tmp用来存放逆转后的字符。此时可以把p1和tmp看成两条链表,指针p2为实现逆转的中转站,p2的长度为tmp和s的长度之和,接下来就通过链表的特性把p1和p2的值进行逆转。
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
void reverse(unsigned char* s) {
int len = strlen((char*)s);
unsigned char tmp[1024];
unsigned char* p1 = s;
unsigned char* p2 = tmp + len;
cout << "strlen:" << len << endl;
*p2-- = 0;
while (*p1){
if (*p1 <= 'z') { //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() {
unsigned char str[128];
cout << "请输入一串字符:";
cin >> str;
reverse(str);
cout << "result:" << str << endl;
system("pause");
return 0;
}
分类:
C++基础第一卷
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!