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

例如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下都实验过了,都是乱码。

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

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

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

例如:

 #include<stdio.h>
int main()
{
    char str[]="输出汉字";
    printf("%s\n",str);
    puts(str);
    return 0;
}
/*
运行结果:
输出汉字
输出汉字
*/

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-22
根据你的代码,改成下面的可以正常输出:
#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;
}本回答被提问者和网友采纳
第2个回答  2016-07-05
你好, C语言直接就能输出汉字,只要你的文件编码支持UTF-8或者其他中文编码的话。
例如printf("你好"),就可以在DOS界面上出现这个两个中文,通常的带界面的编译器都会支持UTF-8编码不需要担心乱码的问题,如果乱码的话有可能分为两种情况,第一种是你的文件编码不支持中文,另一种就是你的中文使用char类型的进行存储,一个中文会占用两个字节来进行存储(也就是两个char字符,如果用一个char字符是存储不了一个中文字符的)
第3个回答  2016-06-27
#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;
}
第4个回答  2010-10-01
LS,不是那个问题。那是自动分配的空间,肯定有空间的。
LZ,我试了一下,是这么输出的:
#include<stdio.h>
void main()
{
int i;
char *p = "你好啊~";
for (i=0;p[i]!='\0';i++)
putchar(p[i]);
}
结果是成功的。
可能是你的编译器有问题,是不是没有汉字的字库?

在C语言中,汉字怎么输入?
在C语言中,可以通过将汉字作为字符串输入。由于一个汉字占2个字节,所以对汉字的操作,只能以2个字节作为操作单位。下面通过具体实例来说明汉字在C语言中的使用:char s[] = "首都北京"; \/\/ 将汉字字符赋值给字符数组char s2[20]; \/\/ 定义字符数组,存放用户输入的汉字scanf("%s", s2);...

请问在C语言中如何输出汉字?
1、引入标准输入输出库:sdtio.h。2、定义字符串形式的汉字(采用字符数组存储)。3、使用printf函数,或者puts函数输出字符串形式的汉字。例如:include<stdio.h>int main(){ char str[]="输出汉字"; printf("%s\\n",str); puts(str); return 0;}\/*运行结果:输出汉字输出汉字*\/ ...

怎么用C语言打出中文?
可以采用字符串输入函数来输入中文。判断中文是不是指定数据,可以用strcmp()函数来进行比较 中文输出,可用printf("%s")来输出相应的数据。参考代码:include <stdio.h>#include <string.h>void main(){ char str[100]; printf("请输入中文: "); scanf("%s", str ); if ( strcmp...

...将汉字给一个变量,使这个变量输出的时候输出汉字?
可以用unsigned char类型的数组储存汉字,输出时按字符串输出即可 include<stdio.h> int main() { unsigned char s[]="百度一下,你就知道"; printf("%s\\n",s); puts(s); scanf("%s",s); printf("%s\\n",s); puts(s); return 0; } ...

C语言中如何输入输出文字
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:char a[20];gets(a);puts(a);。3、编译器运行test.cpp文件,此时可以输入文字。4、按回车,此时会输出刚才输入的文字。

C语言中文字符
在C语言中,如果输出中文字符,可以通过printf函数直接输出。printf函数在内部提供这种机制,实现宽字符的转换,因此都可以正常输出,比如:printf("中文测试\\n");另外也可以使用wprintf来输出存储在变量的中文字符,需要进行语言的区域设置。示例如下:示例如下,输出宽字符“中”字。include <stdio.h>#...

在c语言编辑过程中如何输入汉字?
C语言开发环境有中文环境以及西文环境,在中文环境下可以直接打出汉字,在西文环境下不支持直接输入汉字 在西文环境下,若想要输入汉字,那么应先在编辑软件,如Notepad++上输入汉字,然后将文件转存到西文编译环境的文件夹中,然后再在西文环境下打开即可 需要注意的是,西文环境下并不能直接显示汉字,上述...

c语言编程中,怎么输入输出 姓名,汉字。
如果您是用TC进行编程,那么只能显示英文,如果您是用VC进行编程就可以显示中文了。两者只是编译工具不一样,编程语言的使用是一样的。代码如下:include<stdio.h> include<string.h> int main(){ char name[6][20];char temp[20];printf("请输入6个人的名字:\\n");int i;for (i = 0; i ...

如何在C语言中输出中文!
在C程序中显示汉字\\x0d\\x0a\\x0d\\x0a在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢。\\x0d\\x0a\\x0d\\x0a下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94...

C语言中一个字符用%c输出,那么一个中文字用什么输出呢?
首先要明白,在C语言中,汉字的的储存方式,即一个汉字用两个字节储存,在字符串中,如果要将某一汉字输出,应该同时输出和这个汉字有关的字符,采用printf("%c")方式输出~例如 include"stdio.h"void main(){ char a[]="你好";printf("%c%c%c%c",a[0],a[1],a[2],a[3]);} 或采取...

相似回答