我一直在寻找system("cls")
在 MacOS 上工作的替代方案,我发现了这个:
printf("\e[1;1H\e[2J");
但是我不知道这是在做什么。
\e
是转义,printf() 行告诉终端将光标移动到第 1 行第 1 列 ( \e[1;1H
) 并将当前终端中的所有文本移动到回滚缓冲区 ( \e[2J
)。
这些是 ANSI 转义码,这里有一些资源:
https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
https://bluesock.org/~willkg/dev/ansi.html
https://en.wikipedia.org/wiki /ANSI_escape_code(由tadman建议)
编辑:我也建议使用\e[H\e[2J\e[3J
cls/clear 打印的内容。这告诉终端将光标移动到左上角(\e[H
),清除屏幕(\e[2J
),并清除回滚缓冲区(\e[3J
)。
如果您的语言不支持\e
,您可以将其替换为\x1b
或\033
Hexadecimal
printf("\x1b[1;1H\x1b[2J");
十进制
printf("\033[1;1H\033[2J");