1

我一直在寻找system("cls")在 MacOS 上工作的替代方案,我发现了这个:

printf("\e[1;1H\e[2J");

但是我不知道这是在做什么。

在我找到这个的地方发帖

4

2 回答 2

2

\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[3Jcls/clear 打印的内容。这告诉终端将光标移动到左上角(\e[H),清除屏幕(\e[2J),并清除回滚缓冲区(\e[3J)。

于 2021-04-03T03:54:46.090 回答
0

如果您的语言不支持\e,您可以将其替换为\x1b\033 Hexadecimal

printf("\x1b[1;1H\x1b[2J");

十进制

printf("\033[1;1H\033[2J");
于 2021-09-20T11:44:09.297 回答