Windows 系统(使用 system("cls"))
在Windows环境下,可以使用 system("cls") 命令来清屏。
注意:需要包含 <stdlib.h> 头文件。

(图片来源网络,侵删)
#include <stdio.h>
#include <stdlib.h> // 用于 system()
int main() {
printf("这是第一行内容,\n");
printf("按任意键清屏...\n");
getchar(); // 等待用户按键
system("cls"); // 清屏命令
printf("屏幕已清屏!\n");
return 0;
}
Linux / macOS 系统(使用 system("clear"))
在Linux或macOS环境下,可以使用 system("clear") 命令来清屏。
#include <stdio.h>
#include <stdlib.h> // 用于 system()
int main() {
printf("这是第一行内容,\n");
printf("按任意键清屏...\n");
getchar(); // 等待用户按键
system("clear"); // 清屏命令
printf("屏幕已清屏!\n");
return 0;
}
跨平台方法(兼容Windows和Linux/macOS)
如果希望代码能在不同操作系统上运行,可以使用条件编译:
#include <stdio.h>
#include <stdlib.h>
void clearScreen() {
#ifdef _WIN32
system("cls"); // Windows
#else
system("clear"); // Linux/macOS
#endif
}
int main() {
printf("这是第一行内容,\n");
printf("按任意键清屏...\n");
getchar();
clearScreen(); // 调用清屏函数
printf("屏幕已清屏!\n");
return 0;
}
不依赖 system() 的方法(仅适用于控制台)
如果不想调用外部命令(system() 可能存在安全风险),可以使用特定平台的API:
Windows(使用 GetConsoleScreenBufferInfo 和 FillConsoleOutputCharacter)
#include <stdio.h>
#include <windows.h> // Windows API
void clearScreen() {
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD count;
DWORD cellCount;
COORD homeCoords = { 0, 0 };
if (hStdOut == INVALID_HANDLE_VALUE) return;
// 获取控制台屏幕缓冲区信息
if (!GetConsoleScreenBufferInfo(hStdOut, &csbi)) return;
cellCount = csbi.dwSize.X * csbi.dwSize.Y;
// 填充空格字符
if (!FillConsoleOutputCharacter(hStdOut, ' ', cellCount, homeCoords, &count)) return;
// 填充默认属性
if (!FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, homeCoords, &count)) return;
// 移动光标到左上角
SetConsoleCursorPosition(hStdOut, homeCoords);
}
int main() {
printf("这是第一行内容,\n");
printf("按任意键清屏...\n");
getchar();
clearScreen(); // 调用清屏函数
printf("屏幕已清屏!\n");
return 0;
}
Linux/macOS(使用 ANSI 转义序列 \033[2J\033[H)
#include <stdio.h>
void clearScreen() {
printf("\033[2J\033[H"); // ANSI 转义序列清屏并移动光标到左上角
}
int main() {
printf("这是第一行内容,\n");
printf("按任意键清屏...\n");
getchar();
clearScreen(); // 调用清屏函数
printf("屏幕已清屏!\n");
return 0;
}
| 方法 | 适用系统 | 优点 | 缺点 |
|---|---|---|---|
system("cls") / system("clear") |
Windows / Linux/macOS | 简单 | 依赖外部命令,可能不安全 |
| 跨平台条件编译 | Windows + Linux/macOS | 代码可移植 | 需要判断系统 |
| Windows API | Windows | 高效,不依赖外部命令 | 仅限Windows |
| ANSI 转义序列 | Linux/macOS | 高效,不依赖外部命令 | 仅限Linux/macOS |
推荐:

(图片来源网络,侵删)
- 如果只是简单程序,用
system("cls")或system("clear")最方便。 - 如果需要跨平台,用条件编译方法。
- 如果追求高效或安全性,用特定平台API(Windows API 或 ANSI 转义序列)。
