C语言如何逆序输出一句中文的话

就是不知道怎么用数组接收中文字符,然后遍历输出... 就是不知道怎么用数组接收中文字符,然后遍历输出 展开
 我来答
金色潜鸟
2018-05-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5730万
展开全部
中文是双字节编码,要用 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;
}
追问
谢谢
丁方robot
2018-05-05 · TA获得超过112个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:85.2万
展开全部
给你提供点思路, 中文中文的编码不同, 所占的字符是不一样的,
有的是一个中文占两个字符, 有的占3个字符, 你可以先拿一个中文试试, 看你的是占几个字符的, 然后倒序输出的时候就 再每隔2个(假如一个中文是两个字符)字符转一下输出, 这样输出的就不会乱码了, 而且达到倒转中文的效果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e3a527e
2018-05-05 · TA获得超过152个赞
知道小有建树答主
回答量:219
采纳率:56%
帮助的人:101万
展开全部
试下把输出改成printf("%c",str[i]);
更多追问追答
追问
改了以后还是不行,乱码了
追答
哦,你用了strlen()函数,要加上include的头文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帝苍天殇
2019-06-18
知道答主
回答量:2
采纳率:0%
帮助的人:1383
展开全部
我之前以为是一个汉字两个字节,但后来发现居然是三个(可能是用手机编译的原因,也可能是其它原因,我没有深究),但我用下面的程序弄出来了。你可以参考下。
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式