在CLION中运行程序时如何清除控制台(macOS环境)
在macOS的CLion中实现终端清屏的方法
在macOS系统下使用CLion运行C程序时,尝试用system("clear")或system("cls")清除终端均无效——system("cls")会报错sh: cls: command not found,system("clear")在原生终端运行正常,但在CLion的内置控制台毫无效果,且已正确引入<stdlib.h>库。用户编写的猜数字游戏希望每次循环时清屏,代码如下:
void gameAlgorithm(int difficulty) { int number = rand() % difficulty; int guess = -1; while(guess != number) { printf("\nYour guess?: "); scanf("%d", &guess); if(guess < number) { printf("Number is HIGHER than %d.", guess); }else if(guess > number) { printf("Number is LOWER than %d.", guess); } system("clear"); } printf("\nYOU ARE CORRECT!!!"); }
可行的解决方法
方法1:直接使用ANSI转义序列清屏
CLion的内置控制台支持ANSI转义序列,无需调用系统命令,直接输出清屏序列即可。将代码中的system("clear")替换为:
printf("\033[H\033[J");
这个序列的作用是:
\033[H:将光标移动到屏幕左上角(Home位置)\033[J:清除从光标位置到屏幕末尾的所有内容
修改后的完整函数示例:
void gameAlgorithm(int difficulty) { int number = rand() % difficulty; int guess = -1; while(guess != number) { printf("\nYour guess?: "); scanf("%d", &guess); if(guess < number) { printf("Number is HIGHER than %d.", guess); }else if(guess > number) { printf("Number is LOWER than %d.", guess); } // 使用ANSI转义序列清屏 printf("\033[H\033[J"); } printf("\nYOU ARE CORRECT!!!"); }
方法2:配置CLion使用外部终端运行
如果更习惯使用原生终端的行为,可以让CLion直接调用macOS的自带Terminal运行程序:
- 打开CLion的偏好设置(快捷键
Cmd + ,) - 导航到
Build, Execution, Deployment > Console - 勾选Use external terminal选项
- 点击
Apply保存设置
之后运行程序时,会自动打开系统Terminal窗口,此时system("clear")就能正常生效。
内容的提问来源于stack exchange,提问作者KazlLaur
相关产品推荐
相关产品推荐

