我的C语言程序运行后为什么是乱码?

使用或不适用旧控制台,或者用美国还是中文简体都不行,其中不使用旧控制台运行时什么都不显示。怎么办?

有几个小问题:

    第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;

    第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;

    第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧

希望我的分享对你有用,感谢采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-05
把代码这样修改后试试?主要是在你的编译器环境下运行的程序中能不能输入汉字?如果能够输入汉字的话,下面的程序应该能够起到效果的(程序在DEV-C++环境下编译运行通过):
#include <stdio.h>
#include <stdlib.h>
int main()
{ char chi[30];
int i;
system("chcp 936>nul");
printf("请输入:");
scanf("%s",chi);
for(i=0;chi[i];i++)
chi[i]+=4;
printf("%s",chi);
return 0;
}追问

首先谢谢你!!!

#include <stdlib.h>

system("chcp 936>nul");

我加了这两行就解决了。让我懵的是,之前不用写这个也能打印中文,前几天我为了打印特殊字符用了这个方法(链接)网页链接,我试过chinaboy的方法,不过达不到目的,然后我也不知道需不需要改回来,然后用了牵着小蚂蚁散步的方法就行了。请问有关系吗?能不能弄回以前不需要写这两行代码的状态?

本回答被提问者采纳
第2个回答  2019-09-04

有几个小问题:

    第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;

    第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;

    第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧

追问

我用的codeblocks,之前能够显示中文的。还有,找不到UTF-8这个选项啊。

追答

你好,这个编译器我没有使用过,根据经验,产生乱码的原因应该是这样:你的程序默认代码格式与你设置的控制台显示格式不一致,就是说,编辑文本时的格式是A,编译成二进制文件后,控制台又以其他格式读取了内容。

建议:

    检查一下此软件是否支持C语言中文编辑;

    找到产生的对应exe文件直接运行试试。

本回答被网友采纳
第3个回答  2019-09-05
c程序源码文件字符集和cmd字符集保持一致即可
cmd是gbk,c文件也存为gbk字符集,再出入汉子追问

好像还是不行

第4个回答  2019-09-04

    什么编译器

    输出乱码是哪句printf的结果?

    scanf那里没必要加&了吧

追问

    codeblocks

    printf中的中文乱码,字母还好

    不加&怎么录入?

追答

    你上面有3句printf我问的是哪个输出的乱码

    你试试不加来看

追问

三句printf,哪句有中文的哪句就乱码,

追答

我觉得那你应该搜索或者提问:codeblocks中文乱码