请问在C语言中如何输出汉字?

例如char*p="你好,中国!";我在C++中可以直接输出cout<<p<<endl;就行了。在C语言中,我的想法是由于汉字的补码最高位总是1,所以在内存中如果一个字符... 例如char *p="你好,中国!";
我在C++中可以直接输出cout<<p<<endl;就行了。
在C语言中,我的想法是由于汉字的补码最高位总是1,所以在内存中如果一个字符
是一个负值,那么我就连续输出两个字节把汉字输出。思想转换成代码如下:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p="你好,中国!";
for(size_t i=0;i<strlen(p);++i)
if(p[i]<0)
printf("%c%c",p[i],p[++i]);
return 0;
}

但是输出的结果却是乱码。请问这种情况应该如何处理。
PS:上面的代码我在Linux和Windows XP下都实验过了,都是乱码。
展开
 我来答
go我是一个吃货
2016-07-13 · TA获得超过8115个赞
知道大有可为答主
回答量:2884
采纳率:98%
帮助的人:165万
展开全部

1、引入标准输入输出库:sdtio.h。

2、定义字符串形式的汉字(采用字符数组存储)。

3、使用printf函数,或者puts函数输出字符串形式的汉字。

例如:

 #include<stdio.h>
int main()
{
    char str[]="输出汉字";
    printf("%s\n",str);
    puts(str);
    return 0;
}
/*
运行结果:
输出汉字
输出汉字
*/
zrj_bd
推荐于2018-02-22 · TA获得超过1871个赞
知道小有建树答主
回答量:647
采纳率:100%
帮助的人:1120万
展开全部
根据你的代码,改成下面的可以正常输出:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p="你好,中国!";
for(size_t i=0;i<strlen(p);i++)
if(p[i]<0)
{
printf("%c%c",p[i],p[i+1]);//不要用p[++i],因为printf是先计算右边表达式的值的,按照你原来的代码,假设是第一次循环,那是会输出2个同样的p[1]的,而不是p[0]和p[1]
i++;
}
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1285701575
2016-07-05
知道答主
回答量:10
采纳率:0%
帮助的人:3.5万
展开全部
你好, C语言直接就能输出汉字,只要你的文件编码支持UTF-8或者其他中文编码的话。
例如printf("你好"),就可以在DOS界面上出现这个两个中文,通常的带界面的编译器都会支持UTF-8编码不需要担心乱码的问题,如果乱码的话有可能分为两种情况,第一种是你的文件编码不支持中文,另一种就是你的中文使用char类型的进行存储,一个中文会占用两个字节来进行存储(也就是两个char字符,如果用一个char字符是存储不了一个中文字符的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一链二棍
2016-06-27 · TA获得超过183个赞
知道答主
回答量:19
采纳率:0%
帮助的人:9.9万
展开全部
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p="你好,中国!";
for(size_t i=0;i<strlen(p);i++)
if(p[i]<0)
{
printf("%c%c",p[i],p[i+1]);//不要用p[++i],因为printf是先计算右边表达式的值的,按照你原来的代码,假设是第一次循环,那是会输出2个同样的p[1]的,而不是p[0]和p[1]
i++;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
02230838
2010-10-01 · TA获得超过2067个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:1084万
展开全部
LS,不是那个问题。那是自动分配的空间,肯定有空间的。
LZ,我试了一下,是这么输出的:
#include<stdio.h>
void main()
{
int i;
char *p = "你好啊~";
for (i=0;p[i]!='\0';i++)
putchar(p[i]);
}
结果是成功的。
可能是你的编译器有问题,是不是没有汉字的字库?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式