核心结论前置:CFree 运行程序弹出的黑底控制台,本质是 Windows 系统 cmd 命令提示符窗口,CFree 本身没有内置选项直接修改这个运行结果窗口底色,想要改成白底,主流有两种办法,第一种是修改 Windows cmd 默认属性,让以后所有控制台程序包括 CFree 运行窗口默认变成白底黑字,第二种是在 C 语言代码里面调用系统函数,单独给当前这个程序设置白底控制台,只对本程序生效,不会改动系统全局 cmd 配置,两种方案按需选择,很多同学误以为是 CFree 编辑器界面改颜色,注意区分,编辑器代码编辑区和运行弹出的控制台窗口是两个独立部分,本教程目标是运行结果控制台改成白底。
原因说明:CFree 编译运行之后,调用系统控制台 conhost 来输出 printf 打印内容,控制台的配色是由 Windows 控制台属性或者程序内部 API 控制,CFree 软件本身没有专门的运行窗口配色开关,所以需要借助系统设置或者代码 API 实现白底效果。
方案一 修改系统 cmd 默认属性 全局白底(推荐新手)
适用场景:希望 CFree 每次运行弹出的控制台,全部默认白底黑字,所有 C 程序运行都生效
步骤
1 打开电脑开始菜单,搜索 cmd,右键命令提示符,选择以管理员身份运行
2 在弹出的黑色 cmd 窗口标题栏,右键点击标题,选择属性
3 切换到颜色选项卡,选择屏幕背景,把颜色调整成纯白色,屏幕文字改成黑色,保证文字可以看清
4 点击确定保存,此时这个 cmd 配置会作为默认控制台配置
5 回到 CFree,重新编译运行程序,新弹出的运行结果控制台就会变成白底
补充要点:如果保存之后还是黑底,可以选择默认值,而不是属性,修改默认值会永久生效,属性只对当前窗口生效,这个是最容易踩坑的地方。
方案二 代码内设置白底 单程序生效
适用场景:只需要当前这个 C 语言项目运行窗口白底,不修改系统全局 cmd 配色,作业提交常用
需要用到 Windows API 函数 SetConsoleScreenBufferInfo,代码示例
include
include
int main()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hConsole, &csbi);
// 设置白底黑字 属性
SetConsoleTextAttribute(hConsole, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
printf("这里是白底运行结果\n");
return 0;
}
步骤
1 在 CFree 新建或者打开 C 语言源文件,头部引入 windows.h 头文件
2 复制上面代码,放在 main 函数最开头,在 printf 输出之前执行这个设置
3 点击编译,再运行,这个程序弹出的控制台就会变成白底
注意:这个属性只在当前程序运行期间有效,关闭程序之后,其他控制台窗口不受影响。
两种方案对比表格
| 方案 | 生效范围 | 优点 | 缺点 |
|---|---|---|---|
| 修改 cmd 默认属性 | 全局所有控制台 | 不用写代码,一次设置永久生效 | 会影响电脑其他 cmd 程序 |
| 代码 API 设置 | 仅当前 C 程序 | 只对本程序生效,不改动系统 | 每个新程序都要添加这段代码 |
常见问题排查
1 修改 cmd 属性之后 CFree 运行还是黑底,确认选择的是默认值而不是临时属性,重启 CFree 软件,重新编译运行
2 代码编译报错找不到 windows.h,确认 CFree 的 MinGW 编译器环境正常,头文件路径没有丢失
3 白底之后文字看不清,是文字颜色没有改成黑色,只改了背景,需要同时设置文字颜色为黑色
4 部分新版 Windows10 Windows11 控制台新版终端,会覆盖旧 cmd 属性,需要在终端设置里面关闭新版终端,恢复传统控制台,否则修改属性无效
结论
如果只是作业练习,优先方案二代码设置,不会改动电脑系统;如果想以后所有 CFree 运行窗口都白底,就修改 cmd 默认值,核心记住 CFree 本身没有自带运行窗口白底选项,是依靠 Windows 控制台本身的配置实现。
FAQ
问题 1 cfree 运行结果设置为白底,能不能直接在 CFree 软件里面找到选项?
回答:cfree 运行结果设置为白底,CFree 编辑器本身没有这个内置选项,运行窗口是系统控制台,需要修改 cmd 默认属性或者写 windows API 代码实现。
问题 2 cfree 运行结果设置为白底,修改 cmd 属性会影响别的软件吗?
回答:cfree 运行结果设置为白底,全局修改 cmd 默认值之后,电脑所有调用 cmd 控制台的程序都会变成白底,会影响其他软件控制台窗口。
问题 3 cfree 运行结果设置为白底,代码方式可以保存吗?
回答:cfree 运行结果设置为白底,代码方式是写在源文件里面,保存 c 文件之后,下次打开运行依旧保留白底设置,只对这个源程序生效。
问题 4 cfree 运行结果设置为白底,Win11 设置完还是黑底怎么办?
回答:cfree 运行结果设置为白底,Win11 新版终端会接管控制台,需要在系统终端设置,取消启用新版 Windows 终端,切回传统控制台之后,属性修改才可以生效。
免责声明:本教程仅为 CFree 编译环境常规配置教学,操作属于 Windows 系统常规设置,请谨慎修改系统控制台默认配置,操作前可记录原有配色参数,若因系统版本差异出现设置不生效,属于系统版本兼容问题,相关操作风险由使用者自行承担。


