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

完美!!!

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
OV2640串口输出是指使用OV2640摄像头模块通过串口将图像数据输出。OV2640是一种高清晰度CMOS传感器,可以拍摄高质量的图像和视频。它的串口输出可以通过设置相应的寄存器来启用,并且可以选择不同的输出格式。 在OV2640模块上,一般会有一个带有TX和RX引脚的串口接口。通过将OV2640与单片机或其他设备的串口引脚连接起来,可以实现图像数据的传输。 在使用OV2640串口输出之前,首先需要对OV2640进行初始化和配置。这涉及到设置图像的分辨率、帧率、亮度、对比度等参数。这些参数可以通过向OV2640的特定寄存器写入相应的值来实现。 配置完成后,OV2640就准备好输出图像数据了。当需要获取图像时,可以通过串口发送一个命令给OV2640,让它开始拍摄。OV2640会按照之前配置的参数进行拍摄,并将生成的图像数据通过串口发送出来。 接收端可以通过读取串口缓冲区中的数据来获取OV2640输出的图像数据。根据配置的图像格式不同,接收端需要对接收到的数据进行解析和处理。一般来说,可以将接收到的数据保存到内存中,然后根据需要进行显示或其他后续处理。 需要注意的是,OV2640串口输出的图像数据量较大,传输速度较慢。为了保证数据的完整性和准确性,传输过程中需要注意串口的波特率、校验位等设置,并且合理设计数据接收缓冲区的大小。 总之,OV2640串口输出是一种通过串口将OV2640摄像头模块的图像数据输出方法,可以实现图像的获取和传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值