windows 10系统,codeblocks中代码运行后,输出结果中有乱码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 10系统,codeblocks中代码运行后,输出结果中有乱码?相关的知识,希望对你有一定的参考价值。
#include <stdio.h>#include <string.h>#include <windows.h>int main(void) char buff[1024]; memset(buff, '\0', sizeof(buff)); setvbuf(stdout, buff, _IOFBF, 1024); fprintf(stdout, "This is bbs.fishc.com\n"); fprintf(stdout, "This output will go into buff\n"); fflush(stdout); fprintf(stdout, "this will appear when progream\n"); fprintf(stdout, "will come after sleeping 5 seconds\n"); Sleep(5000); return 0;上面代码运行后,输出结果为下图:最后2行结果显示未乱码是什么原因?
参考技术A 如果只有在输出中文时才导致的乱码,这是因为编码问题引起的很大可能是你的源文件编码为utf-8,编译时默认与源文件编码一致
可以添加编译参数:-finput-charset=utf-8 -fexec-charset=gbk
-finput-charset:用来指定输入文件(你的cpp文件)的字符编码
-fexec-charset:表示以指定编码进行编译追问
不是中文字符的问题
参考技术B应该是字符集编码问题
可将fprintf改为fwprintf,用宽字符集输出
追问还是输出不了。
追答将源码的文本编码改为UTF-8,重新编译运行
参考技术C setvbuf(stdout, buff, _IOFBF, 1024);使用的buff一个局部变量,在return的时候内存就被释放了。
在程序结束的时候才会flush输出,此时buff的地址里面的内容已经不可知了。
以上是关于windows 10系统,codeblocks中代码运行后,输出结果中有乱码?的主要内容,如果未能解决你的问题,请参考以下文章
怎么在windows系统搭建平台codeblocks+mingGW+wxWidgets
CODEBLOCKS10.05 编译运行时 DOS窗口的中文显示为乱码?怎么解决?