中文字符串逆转输出
中文字符存储单位为两个字节。程序如下:
#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;
}