为什么qt中用printf打印的汉字是乱码?怎么解决? printf输出文字乱码
为什么我printf函数里面的汉字全部显示乱码
#includeintmain(){inta[3][3],b[3][3],i,j;printf("输入数组的值:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("\n");for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[j][i];//值互换的方向反了,该是b=a的形式,不是a=b的形式for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%2d",b[i][j]);//if(i%3==0)这句不要printf("\n");}return0;}
为什么printf输出变成了乱码
可能是编译器是西文环境,不直接支持汉字的输入与输出
编程问题,printf输出是乱码,求解释
汉字乱码的问题,参考下面的解决方法
在WIN-TC中输入如下代码:
#include "stdio.h"
main()
{
system( "graftabl 936 "); /*调用Ms-Dos中文支持 */
clrscr(); /* 清屏*/
printf( "输出中文");
getch();
}
运行后你会发现输出了中文,是不是啊?!
就是在程序开始加入 system( "graftabl 936 ");那句
关于C语言printf的使用,为何输出乱码
这里面错误很多,首先scanf里不要用无关的字符,直接scanf("%d%d",&a,&b)就行了(输入ab的时候中间用英文空格或TAB键空开),%e一般是用在printf里,在scanf是不用的,最重要的错误是printf的时候直接写变量名就行了,另外有一个隐藏的错误,当你在scanf的后面用scanf("%c的时候,需要先用getchar()或者fflush(stdin); 清除缓冲区,否则会导致你那个C1取到的是上一行的换行符,更改如下
#include
int main() {
int a,b;
float x,y;
char c1,c2;
printf("input a b:");
scanf("%d%d",&a,&b);
printf("input x y:");
scanf("%f%f",&x,&y);
fflush(stdin);
printf("input c1c2:");
scanf("%c%c",&c1,&c2);
printf("a=%d\nb=%d\nx=%f\ny=%e\nc1=%d\nc2=%c",a,b,x,y,c1,c2);
return 0;
}