C语言暂时小白在win10环境下使用CLion中遇到的控制台输出和编译问题合集
来源:3-2 数据类型之char类型【常见问题解决】

Macrohard
2021-03-26
1. https://coding.imooc.com/learn/questiondetail/226012.html
在上周提问的问题个人感觉问题描述应该比较清晰,使用代码就是跟着老师的笔记一起敲的,如下:
wchar_t zhong = L'中'; wchar_t zhong_hex = L'\u4E2D'; printf("中:%d\n", zhong); printf("中:%d\n", zhong_hex);
在自行百度解决方法之后,在看得懂的技术帖里找到了如下方法:
“CLion中按住Ctrl+Shift+Alt+/选中Registry...,然后取消掉 run.processes.with.pty 后面的√。”
照做后解决了“文件编码为UTF-8,使用Debug-MinGW编译后输出宽字符'中'为乱码”的问题,输出如下:
不过又出现了新的问题。。。
2. 在自己对C语言参考书中代码做练习后发现取消掉 run.processes.with.pty后(备注:取消后须用UTF-8编码,使用GKB会乱码),使用scanf读入数据前无法用printf给提示信息,使用代码如下:
#include <stdio.h> int main() { const int PASS = 60; int score; printf("请输入成绩:"); scanf("%d", &score); printf("你输入的成绩是%d。\n", score); if (score < PASS) { printf("很遗憾,这个成绩没有及格。"); } else { printf("祝贺你,这个成绩及格了。"); } printf("再见\n"); return 0; }
运行后截图:
所以迫于无奈我又把run.processes.with.pty打勾了(我也尝试去百度原因,但是发现这类技术贴已经超出我目前的理解范围了,看不懂。。。),此时正常运行(备注:打勾后需要更改编码为GKB),如下:
3. Debug模式也很离谱
第一是在scanf之前不管对于中文字符串还是英文字符串的printf提示信息都不显示
第二是和控制台相反,GBK编码是乱码,UTF-8正常输出
所以对于不同情况需要来回切换编码,对于字符还需要对设置选择打不打勾。。。
目前学习中对于CLion的问题就发现这么多,我最近才使用windows系统的电脑,还不是很了解,以前一直在用mac系统,在Xcode中运行过C的代码,运行和debug没有出现过类似的乱码和不给提示信息的问题。。。不过我那个MacBook air硬盘和内存都不太够用了,所以现在就上学记笔记看看视频用,暂时也没打算在mac上写代码。。。
3回答
-
win上locale是chs的时候,控制台的编码默认是gbk,编译器编译源码的时候如果文件没有bom信息也会默认gbk,这些其实往往会对C语言的学习造成干扰。一开始可以先避免使用cjk字符,加快学习进程,后面学得多了之后再慢慢理解编码的问题也不迟
152021-03-28 -
bennyhuo
2021-03-27
编码问题主要是win上多,这锅不是clion的。。。
122021-03-27 -
bennyhuo
2021-03-27
嗯,pty模式也有坑,所以我在课程里面没有提。clion的控制台是有问题的,涉及此类问题可以直接用原生命令行运行来确认到底问题在哪儿,以免被clion干扰。
132021-03-28
相似问题