4个回答
展开全部
中文是双字节编码,要用 wchar。若是中文与英文混合码,则比较麻烦。
若用 char ,全中文,可以尝试 双字节交换再输出。例如:
int main( )
{
char str[80]="尝试双字节交换再输出";
char t1,t2;
int L,i;
L=strlen(str);
for (i=0;i<L/2;i=i+2){
t1=str[i];t2=str[i+1];
str[i] = str[L-2-i]; str[i+1]=str[L-1-i];
str[L-2-i]=t1; str[L-1-i]=t2;
}
printf("%s",str);
return 0;
}
若用 char ,全中文,可以尝试 双字节交换再输出。例如:
int main( )
{
char str[80]="尝试双字节交换再输出";
char t1,t2;
int L,i;
L=strlen(str);
for (i=0;i<L/2;i=i+2){
t1=str[i];t2=str[i+1];
str[i] = str[L-2-i]; str[i+1]=str[L-1-i];
str[L-2-i]=t1; str[L-1-i]=t2;
}
printf("%s",str);
return 0;
}
追问
谢谢
展开全部
给你提供点思路, 中文中文的编码不同, 所占的字符是不一样的,
有的是一个中文占两个字符, 有的占3个字符, 你可以先拿一个中文试试, 看你的是占几个字符的, 然后倒序输出的时候就 再每隔2个(假如一个中文是两个字符)字符转一下输出, 这样输出的就不会乱码了, 而且达到倒转中文的效果
有的是一个中文占两个字符, 有的占3个字符, 你可以先拿一个中文试试, 看你的是占几个字符的, 然后倒序输出的时候就 再每隔2个(假如一个中文是两个字符)字符转一下输出, 这样输出的就不会乱码了, 而且达到倒转中文的效果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试下把输出改成printf("%c",str[i]);
更多追问追答
追问
改了以后还是不行,乱码了
追答
哦,你用了strlen()函数,要加上include的头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我之前以为是一个汉字两个字节,但后来发现居然是三个(可能是用手机编译的原因,也可能是其它原因,我没有深究),但我用下面的程序弄出来了。你可以参考下。
#include<stdio.h>
#include<string.h>
int main()
{
int i, l;
char str[100], str0[100];
gets(str);
l = strlen(str);
for (i = 0; str[i] != '\0'; i = i + 3)
{
str0[i] = str[l - i - 3];
str0[i + 1] = str[l - i - 2];
str0[i + 2] = str[l - i - 1];
}
puts(str0);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
int i, l;
char str[100], str0[100];
gets(str);
l = strlen(str);
for (i = 0; str[i] != '\0'; i = i + 3)
{
str0[i] = str[l - i - 3];
str0[i + 1] = str[l - i - 2];
str0[i + 2] = str[l - i - 1];
}
puts(str0);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询