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

完美!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值