中文字符串逆转输出

mac2024-10-25  45

中文字符串逆转输出

中文字符存储单位为两个字节。程序如下:

#include <iostream> #include <stdio.h> #include <Windows.h> #include <string.h> using namespace std; #define NUM 16 //8-9 --> 0-1 void change(char *arr,int n){ char *p = arr; char value[NUM] = {0}; int number = 0; int j = 0; for(int i=0;i<n;i++){ value[i] = *(arr+i); } for(int i=0;i<n;i++){ if(*(arr+i) == '\0'){ number = i; break; } } //printf("number =%d\n",number);//number = 10(字符串结束符的位置) //因为地址相同,所以是把两个一起改了,地址相同会出现“新萌小萌新” for(int i=number-1;i>=0;i-=2){ //i = 9 arr[j++] = value[i-1]; //*(p+i-1); //0-->8 2-->6 4-->4 6-->2 8-->0 arr[j++] = value[i]; //*(p+i); //1-->9 3-->7 5-->5 7-->3 9-->1 } //0-1:我|2-3:是|4-5:小|6-7:萌|8-9:新 for(int i=0;i<n;i++){ printf("%c",arr[i]); } printf("\n"); } int main(void){ char arr[NUM] = {"我是小萌新"}; cout<<sizeof(arr)<<endl;//数组长度 change(arr,NUM); system("pause"); return 0; }
最新回复(0)