中文字符串逆序输出

      今天碰到这个题,让我逆序输出中文字符串,可给我烦死了,之前没有遇到过,也是查了资料才知道,让我太汗颜了。

     英文字符串逆序输出很容易,开辟一块空间用来存放逆序后的字符串,从后往前遍历原字符串,对现在这个字符串赋值即可,代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{char s[] = "hello";int len = strlen(s);char* str = (char*)malloc(sizeof(char) * len + 1);int j = 0;for (int i = len - 1; i >= 0; i--){str[j++] = s[i];}str[j] = '\0';for (int i = 0; i < len; i++){printf("%c", str[i]);}return 0;
}

     是不是很简单,那你可能就会说,中文字符串逆序输出有什么难的,把 hello改成你想逆序输出的不完了吗?我也是这样想的,结果大错特错!

     接下来我查了资料才发现了我之前不知道的知识点,我们知道在字符编码方面,ASCII码为标准符号、数字、英文等进行了保留,取值范围是0~127,还有一部分作为拓展ASCII码128~255,当我们采用非ASCII编码时(汉字编码),一般用拓展ASCII码来进行,约定用128~255范围的连续2个进行汉字编码,同时因为编码的问题汉字所占字节的第一位必须是1,这样转化成有符号数字之后是小于0的,转化成无符号数字就大于127,这就涉及到了编码的知识,有兴趣的自行了解,因此,在处理字符串时,如果是有符号字符串,遇到小于0的字符,会结合后面紧跟的字符来组成一个汉字,如果是无符号的,则判断是否大于127

     还有就是一个汉字占用两个字节,知道了以上的知识,才能写出正确的代码。

#include<stdio.h>
#include<string.h>
int main()
{char s[] = "你好张三";int len = strlen(s);char* p = s;for (int i = len - 1; i >= 0;){if (p[i] < 0)//判断字符值是否小于0,这里默认char是signed char类型{for (int k = i - 1; k <= i; k++){printf("%c", p[k]);//字符值小于0,则说明它和它前面一个表示一个汉字}i -= 2;//遍历跳过两个字节,一个汉字占两个字节}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统笔记——储存系统、文件系统(王道408)

文章目录 前言储存系统地址转换内存扩展覆盖交换 储存器分配——连续分配固定大小分区动态分区分配动态分区分配算法 储存器分配——非连续分配页式管理基本思想地址变换硬件快表&#xff08;TLB&#xff09;多级页表 段式管理段页式管理 虚拟储存器——基于交换的内存扩充技术…

解决Adams许可文件被篡改问题,确保仿真分析的合法性和安全性

在工程仿真领域&#xff0c;Adams软件是一款广泛使用的动力学分析工具。然而&#xff0c;有时用户会遇到Adams许可文件被篡改的问题&#xff0c;这会给仿真工作带来很大的困扰和风险。为了帮助大家解决这一难题&#xff0c;我们推出了一篇关于Adams许可文件被篡改问题的宣传文章…

题目:区间或 (蓝桥OJ 3691)

题目描述: 解题思路: 本题采用位运算.先求出全部数组每一位各自的前缀和,然后再判断区间内每一位区间和是否为0,不为0则乘上相应的2^n并将各个为的2^n相加,得ans. 实现原理图 题解: #include<bits/stdc.h> using namespace std;const int N 1e5 9;int a[N], prefix[35…

线程核绑定

● CPU频率&#xff1a; ○ CPU内部的数字时钟信号频率&#xff0c;又称为时钟频率&#xff0c;并不能代表CPU的真实性能水平。 ○ 由于RC电路的限制&#xff0c;信号的时钟频率不能太大。 ● 超频&#xff1a; ○ 提高硬件的工作频率&#xff0c;让它们在高于其额定的频率状态…

ANSYS 有限元分析 后处理 结点解与单元解-命令流对应的GUI操作

本文是对这篇文章中的命令流寻找其对应的GUI操作&#xff08;如果有&#xff09;&#xff1a; ANSYS 有限元分析 后处理 结点解与单元解-CSDN博客 下面这个对应的GUI操作为在官方帮助文档Ansys_Mechanical_APDL_Command_Reference_2中查到的&#xff0c;对应的版本是2022R2&a…

20231215给AIO-3399J适配Rockchip的原始Andoroid10的挖掘机开发板02

20231215给AIO-3399J适配Rockchip的原始Andoroid10的挖掘机开发板02 2023/12/15 15:37 【请严重注意&#xff1a;】如果刷不适配的SDK&#xff0c;可能会引起您的开发板【硬件发生物理】损坏&#xff01; 如果您按照本步骤刷机引起的一切后果&#xff0c;请自行承担责任&#x…

Day09 Liunx高级系统设计11-数据库1

MySQL 简介 数据库DB 数据库&#xff08; DataBase &#xff0c; DB &#xff09;从本质上讲就是一个文件系统&#xff0c;它能够将数据有组织地集合在一起&#xff0c;按照一定的规则长期存储到计算机的磁盘中&#xff0c;并且能够供多个用户共享和使用&#xff0c;同时&…

Linux篇:信号

一、信号的概念&#xff1a; ①进程必须识别能够处理信号&#xff0c;信号没有产生&#xff0c;也要具备处理信号的能力---信号的处理能力属于进程内置功能的一部分 ②进程即便是没有收到信号&#xff0c;也能知道哪些信号该怎么处理。 ③当进程真的受到了一个具体的信号的时候…

网络安全之计算机网络基础知识<二>

目录 一.IP与端口二.HTTP协议分析 一.IP与端口 IP地址&#xff1a;指互联网协议地址。是IP协议提供的地址格式&#xff0c;为互联网上的每一个网络和每一个主机分配一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异。 简单来说&#xff0c;IP地址是电子设备&#xff08;计算…

猫粮哪个牌子质量好性价比高?分享十款主食冻干猫粮品牌排行榜!

一款好的、健康的主粮对猫整体有很大的提升&#xff0c;主食作为猫的日常饮食&#xff0c;直接关乎着小猫是否能摄入充分的营养&#xff0c;达到最佳的理想状态&#xff0c;因此对于每一位铲屎官来说&#xff0c;主食选得好不好至关重要。面对种类众多的主食&#xff0c;很多人…

c/c++ 结构体、联合体、枚举

结构体 结构体内存对齐规则&#xff1a; 1、结构体的第一个成员对齐到结构体变量起始位置偏移量为0的地址处 2、其他成员变量要对齐到某个数字&#xff08;对齐数&#xff09;的整数倍的地址处。 对齐数&#xff1a;编译器默认的一个对齐数与该成员变量大小的较小值。 vs 中…

chaosblade混沌测试

chaosblade安装部署 https://alden.blog.csdn.net/article/details/129941689 https://github.com/chaosblade-io/chaosblade/tags安装部署 [rootvm ~]# wget https://github.com/chaosblade-io/chaosblade/releases/download/v1.3.0/chaosblade-1.3.0-linux-amd64.tar.gz[ro…

编程实际应用实例:洗车店会员管理系统操作教程

一、前言 洗车店在会员管理有时候需要一卡多用&#xff0c;基本也不需要做卡&#xff0c;直接报手机号或车牌号即可完成电子会员卡录入。 下面以 佳易王洗车店会员管理系统软件为例说明&#xff0c; 软件试用版下载或技术支持可以点击下方的官网卡片 如图&#xff1a;这个卡…

【教程】Autojs脚本实现暂停和超时重启功能的思路和示例代码

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 autojs本身不支持暂停脚本&#xff0c;现有网上大部分最直接的做法就是在每条语句后面添加检查是否暂停。当脚本功能和代码量非常打的时候&#xff0c;每一条语句后面都加检测&#xff0c;未免不太现实。…

如何一次性scp多个文件到远程机器上

如题&#xff0c;如果想要使用 scp 一次性复制多个文件到远程机器上&#xff0c;可以用以下命令实现&#xff0c;格式如下&#xff1a; $ scp -P port local_file1 local_file2 ... usernameremote_host:remote_path其中&#xff1a; port 是远程主机的指定端口号&#xff0c…

Nginx-nginx 反向代理方式(超详细)

当涉及到提高网站的性能和可用性时&#xff0c;负载均衡和反向代理是非常关键的组件。Nginx是一款高性能的Web服务器和反向代理服务器&#xff0c;它提供了强大的负载均衡功能。下面是关于如何使用Nginx实现反向代理的一些基本步骤&#xff1a; 1.什么是反向代理&#xff1f;&…

Uniapp小程序通过camera组件实现视频拍摄

uni中可以通过调用api的方式去拍摄或者是选择相册的视频&#xff0c;但是在这里我们不采取这种方式&#xff0c;因为调用api的方式&#xff0c;必须跳转&#xff0c;而我们需要在页面中实现&#xff0c;下面看下具体步骤吧... <camera v-if"!srcUrl && showCam…

TypeScript 使用泛型 接收后端的统一返回对象

后端往往在返回数据的时候都会有一个固定的格式&#xff0c;来搭配前端的数据接收工作。 比如&#xff1a; // 返回格式 一 {code:200,message:success,data:{name:勿语,age:18} } // 返回格式 二 {code:200,message:success,data:dawkn23n1io2nkfdawbdkbwfa }从返回结果来看…

RFID技术在物流仓储解决方案中的应用

行业现状 当前市场竞争日益激烈&#xff0c;提高生产效率、降低运营成本对企业至关重要。仓库和物流管理在各行业中广泛应用。建立完善的仓库管理流程&#xff0c;提高仓库周转率&#xff0c;减少资金占用&#xff0c;实现资产变现&#xff0c;降低仓库淘汰成本&#xff0c;是…

c++面经总结

C基础语法 C和c的区别 c中new和delete是对内存分配的运算符&#xff0c;取代了c中的malloc和free 标准c中的字符串类取代了标准c函数库头文件中的字符数组处理函数(c中没有字符串类型). 在c中&#xff0c;允许有相同的函数名&#xff0c;不过他们的参数类型不能完全相同&…