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编译后输出宽字符'中'为乱码”的问题,输出如下:

http://img.mukewang.com/szimg/605df3950984a12404220128.jpg

不过又出现了新的问题。。。


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

运行后截图:

http://img.mukewang.com/szimg/605df5c5098f7cb804120147.jpg

所以迫于无奈我又把run.processes.with.pty打勾了(我也尝试去百度原因,但是发现这类技术贴已经超出我目前的理解范围了,看不懂。。。),此时正常运行(备注:打勾后需要更改编码为GKB),如下:

http://img.mukewang.com/szimg/605df69609744fee04090159.jpg


3. Debug模式也很离谱

第一是在scanf之前不管对于中文字符串还是英文字符串的printf提示信息都不显示

第二是和控制台相反,GBK编码是乱码,UTF-8正常输出

http://img.mukewang.com/szimg/605df8b109eebbb604210157.jpg

http://img.mukewang.com/szimg/605df8b109ed420c04140156.jpg

所以对于不同情况需要来回切换编码,对于字符还需要对设置选择打不打勾。。。


目前学习中对于CLion的问题就发现这么多,我最近才使用windows系统的电脑,还不是很了解,以前一直在用mac系统,在Xcode中运行过C的代码,运行和debug没有出现过类似的乱码和不给提示信息的问题。。。不过我那个MacBook air硬盘和内存都不太够用了,所以现在就上学记笔记看看视频用,暂时也没打算在mac上写代码。。。


写回答

3回答

bennyhuo

2021-03-27

win上locale是chs的时候,控制台的编码默认是gbk,编译器编译源码的时候如果文件没有bom信息也会默认gbk,这些其实往往会对C语言的学习造成干扰。一开始可以先避免使用cjk字符,加快学习进程,后面学得多了之后再慢慢理解编码的问题也不迟

1
5
bennyhuo
回复
Macrohard
好的,加油!
2021-03-28
共5条回复

bennyhuo

2021-03-27

编码问题主要是win上多,这锅不是clion的。。。

1
2
Macrohard
不过我在win上面也用了同家公司的Pycharm,就没有这些中文字符的问题,感觉相较于python这种新建文件就直接写代码运行,C语言要配置的东西确实不少,哈哈,要是没有您课程里写好的Cmake文件,估计我头都大了。。不过目前来讲,跟着您讲课的节奏大部分都是能听懂的,小部分应该以后可以理解,您的授课风格我还是挺喜欢的。。
2021-03-27
共2条回复

bennyhuo

2021-03-27

嗯,pty模式也有坑,所以我在课程里面没有提。clion的控制台是有问题的,涉及此类问题可以直接用原生命令行运行来确认到底问题在哪儿,以免被clion干扰。

1
3
Macrohard
回复
bennyhuo
了解!
2021-03-28
共3条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程