请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

C语言暂时小白在win10环境下使用CLion中遇到的控制台输出和编译问题合集

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

https://img1.sycdn.imooc.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;
}

运行后截图:

https://img1.sycdn.imooc.com//szimg/605df5c5098f7cb804120147.jpg

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

https://img1.sycdn.imooc.com//szimg/605df69609744fee04090159.jpg


3. Debug模式也很离谱

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

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

https://img1.sycdn.imooc.com//szimg/605df8b109eebbb604210157.jpg

https://img1.sycdn.imooc.com//szimg/605df8b109ed420c04140156.jpg

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


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


正在回答

3回答

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

1 回复 有任何疑惑可以回复我~
  • 提问者 Macrohard #1
    大概明白了,那我目前就字符串全英文来写代码吧,看来C语言确实比Python麻烦一些,要考虑的点好多啊。。
    回复 有任何疑惑可以回复我~ 2021-03-27 11:28:05
  • 提问者 Macrohard #2
    补充一下:目前用到中文字符比较多的地方就是中文的参考书和习题集上面的练习,毕竟我觉得学习知识是一方面,动手练习也很重要嘛
    回复 有任何疑惑可以回复我~ 2021-03-27 12:13:27
  • bennyhuo 回复 提问者 Macrohard #3
    C 语言比 Python 更接近底层,相比之下 Python 比 C 语言的入门门槛低很多。当然,想要用好 Python 也不是一件容易的事儿~有问题多交流哈~
    回复 有任何疑惑可以回复我~ 2021-03-28 11:08:17
bennyhuo 2021-03-27 07:55:38

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

1 回复 有任何疑惑可以回复我~
  • 提问者 Macrohard #1
    这样啊,主要是刚开始接触windows系统,感觉还是mac系统对电脑小白友好很多,不用考虑太多问题,基本安装完不用改啥设置都正常能用,哈哈
    回复 有任何疑惑可以回复我~ 2021-03-27 11:30:31
  • 提问者 Macrohard #2
    不过我在win上面也用了同家公司的Pycharm,就没有这些中文字符的问题,感觉相较于python这种新建文件就直接写代码运行,C语言要配置的东西确实不少,哈哈,要是没有您课程里写好的Cmake文件,估计我头都大了。。不过目前来讲,跟着您讲课的节奏大部分都是能听懂的,小部分应该以后可以理解,您的授课风格我还是挺喜欢的。。
    回复 有任何疑惑可以回复我~ 2021-03-27 11:43:29
bennyhuo 2021-03-27 07:54:42

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

1 回复 有任何疑惑可以回复我~
  • 提问者 Macrohard #1
    暂时还不懂您说的啥意思,不过我觉得您说的“先避免使用cjk字符,加快学习进程”有道理,我先学习C语言本身的知识,IDE能用就行,然后再去了解CLion内部或者win系统的模式
    回复 有任何疑惑可以回复我~ 2021-03-27 11:34:11
  • bennyhuo 回复 提问者 Macrohard #2
    pty 模式我印象中会在程序结束之后才能看到所有输出,在涉及到交互式输入时就比较难受了。
    回复 有任何疑惑可以回复我~ 2021-03-28 11:09:31
  • 提问者 Macrohard 回复 bennyhuo #3
    了解!
    回复 有任何疑惑可以回复我~ 2021-03-28 13:32:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信