使用clion后发现控制台的中文会出现乱码,于是按照网上最常见的方法进行了设置
一、乱码的解决方法
1.第一步更改clion设置:Settings----->Editor----->FileEncodings
三处都改为UTF-8
2.取消勾选 run.processes.with.pty
按下快捷键 Ctrl+Shift+Alt+/ 点击Registry
然后将 run.processes.with.pty的勾取消
但这样可能会每次重新打开clion时都要来取消勾选,一劳永逸的方法是
找到"C:\Program Files\JetBrains\CLion 2023.3.4\bin"文件夹,就是当初安装clion的位置,在bin文件夹中找到idea.properties文件,将 run.processes.with.pty改为false
这样设置完控制台就不会有乱码了,但会出现新的问题,printf和scanf的顺序会出现问题
二、printf和scanf顺序错乱
源代码
#include <stdio.h>
int main() {
int num1, num2, sum;
// 提示用户输入第一个数
printf("输入第一个数:");
scanf("%d", &num1);
// 提示用户输入第二个数
printf("输入第二个数:");
scanf("%d", &num2);
// 计算两个数的和
sum = num1 + num2;
// 输出结果
printf("两个数相加的结果是%d\n", sum);
return 0;
}
正常来说应该是printf先出现,实际是printf最后出现了
临时解决方案是
使用fflush(stdout)
博在printf()与scanf()之间加上fflush(stdout),可以解决问题。fflush(stdout)详细使用方法见fflush(stdout)的使用
改变后的代码为
#include <stdio.h>
int main() {
int num1, num2, sum;
// 提示用户输入第一个数
printf("输入第一个数:");
fflush(stdout);
scanf("%d", &num1);
// 提示用户输入第二个数
printf("输入第二个数:");
fflush(stdout);
scanf("%d", &num2);
// 计算两个数的和
sum = num1 + num2;
// 输出结果
printf("两个数相加的结果是%d\n", sum);
return 0;
}
运行结果为
但这样也只是指标不治本,总不能每次写一个printf都特意加一个fflush(stdout),不勾选 run.processes.with.pty就会出现这样的问题,但勾选之后又会出现控制台乱码,有没有两全其美的办法呢。经查询确实有更改方法,printf和scanf问题和中文乱码问题好像也与mingw编译器有一定关系,将mingw编译器更改为cygwin编译器就可以解决。
三、clion中mingw编译器更改为cygwin编译器
请参考链接!!!mingw编译器更改为cygwin编译器
按文章设置之后注意将cygwin拖到mingw上面,即设为默认
也可以在这里设置项目所用的编译器
更改完编译器后记得这里还是要设置,但不用取消勾选run.processes.with.pty了
更改完编译器来看看运行效果
代码
#include <stdio.h>
int main() {
int num1, num2, sum;
// 提示用户输入第一个数
printf("输入第一个数");
scanf("%d", &num1);
// 提示用户输入第二个数
printf("输入第二个数");
scanf("%d", &num2);
// 计算两个数的和
sum = num1 + num2;
// 输出结果
printf("相加等于 %d\n", sum);
return 0;
}
完美!!!