第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]);
}
结果是成功的。
可能是你的编译器有问题,是不是没有汉字的字库?