解决思路:由于汉字根据编码不同而所占据的字节也不同,一般来说:GBK\GB2312编码是2个字节,但是unicode\utf-8编码是3个字节。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str[]="世界你好";
short *str1=&str; //指向str[0]
short *str2=&str[strlen(str)-2];//指向str[8-2],由于这里用的是short占两个字节
while(str1<str2){ //当str1>str2时,字符数组已经逆置完了。
short temp=*str1; //前面和后面字符两两互换。
*str1=*str2;
*str2=temp;
str1++;
str2--;
}
printf("%s",str);
return 0;
}
#include <string.h>
int main()
{
char str[]="世界你好";
short *str1=&str; //指向str[0]
short *str2=&str[strlen(str)-2];//指向str[8-2],由于这里用的是short占两个字节
while(str1<str2){ //当str1>str2时,字符数组已经逆置完了。
short temp=*str1; //前面和后面字符两两互换。
*str1=*str2;
*str2=temp;
str1++;
str2--;
}
printf("%s",str);
return 0;
}