clion控制台中文乱码及网上常见方法更改后出现printf和scanf顺序错乱的问题

使用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;
}

完美!!!

### CLion中打印中字符出现乱码的解决方案 在Windows环境下,CLion中的中字符乱码问题通常是由于编码不一致引起的。以下是几种可能的原因以及对应的解决方法: #### 方法一:调整运行配置中的`run.processes.with.pty`选项 如果发现控制台输出存在乱码现象,可以尝试取消勾选`Settings -> Build, Execution, Deployment -> Console -> run.processes.with.pty`这一选项[^1]。这样做可以让CLion控制台输出采用UTF-8编码方式,从而减少因编码差异而导致的乱码。 #### 方法二:修改件编码为GBK 虽然将件编码设置为GBK可以在一定程度上解决问题,但这并不是推荐的做法。因为这可能会引发其他兼容性问题,尤其是在跨平台开发时。因此,在正常情况下应尽量避免这种方法[^2]。 #### 方法三:通过环境变量指定编码格式 可以通过设置系统的区域语言选项或者定义特定的环境变量来强制规定程序使用的字符集为UTF-8。具体操作如下: 1. **更改系统区域设置**:进入操作系统设置界面,找到“时间语言”,然后切换到“区域”部分,确保选择了支持Unicode的语言包。 2. **添加环境变量**:创建一个新的系统级环境变量名为`JAVA_TOOL_OPTIONS`,其值设为`-Dfile.encoding=UTF-8`。对于C++项目,则需确认编译器参数也包含了相应的编码指令。 #### 方法四:编辑器内部设定统一编码标准 确保整个项目的源代码均保存为UTF-8无BOM形式,并且IDE本身也是按照这个准则处理档读写过程。路径位于`File -> Settings -> Editor -> File Encodings`,这里要保证Global Encoding、Project Encoding都指向UTF-8[^3]。 ```cpp #include <iostream> using namespace std; int main() { cout << "你好" << endl; return 0; } ``` 以上代码片段展示了如何简单测试是否解决了中显示问题。当执行这段简单的C++程序时,“你好”应该能够被正确地呈现出来而不是变成奇怪的符号串。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值