解决C/C++ fscanf函数 ifstream输入流中文乱码问题
在C语言使用fscanf函数的时候,引入中文可能出现乱码的情况,本篇文章用来解释问题产生的原因并提供解决办法。
问题演示
如上图,我们从data.txt的文件指针fp中向程序内部读入一行信息,并打印在显示器上,结果如下:
可以看到,中文部分是乱码,不信试试把中文换成英文,就正常了,这猜都能猜到是字符编码问题;(C++的ifstream也有同样问题)
乱码是txt文件本身(utf-8编码)和我们用的Dev-C++ 或者 VS2019等编译器产生了不兼容。设置一下文件格式使其兼容编译器即可;
解决方法
打开刚才的data.txt文件,点击左上角文件->另存为->编码设置ANSI即可
(注意文件名和路径别乱改,不然程序找不到打不开了)