如何在unix/posix中清除(重置)屏幕?(不是诅咒/换行)

Zor*_*one 0 c unix terminal console

我想知道(如果可能的话)你如何清除/重置linux/mac/unix(不是DOS)中的终端屏幕,就像你在windows/DOS上用"conio.h"中的clrscr()一样.我知道这里和网上都有类似的问题,但我找不到能够回答我特定案例的问题.

注意:我知道模拟系统的curses/ncurses和解决方案("清除"),但这不是我想要的.我想完全重置终端缓冲区(即我不想向下滚动或添加换行符以清除屏幕),请不要使用curses/ncurses(我不喜欢ncurses屏幕模式,我想坚持使用默认模式).

是可能还是我在问一些不可能的事情?:P我试图制作一个没有诅咒的控制台游戏(不完全是一个roguelike),我不喜欢看到我在屏幕上打印的内容,只需向上滚动即可清除它.

编辑:我已经尝试过系统("重置"),这不是一个使用系统调用的好方法,并且它使用该命令得到了一个不好的延迟,但它接近我想要做的..是否有某种功能/库可以做类似的事情吗?

我认为这也是一个很好的解决方案,做一些像移动(0,0),然后再打印我需要的东西或只是空白(这样我不会滚动和上面的旧文本).但我不知道是否有一个库可以做到这一点,而不是没有curses模式.

现在看下面我自己的答案,我正在使用

printf("\033c");
Run Code Online (Sandbox Code Playgroud)

这个工作正常,解决了我的问题.如果有人知道此解决方案的任何问题,请告诉我. 我的光标可见性有问题.如果它被隐藏了,这段代码会再次显示,你知道修复此问题吗?

谢谢,

Zorgatone

Zor*_*one 5

我刚刚感谢Jayesh,这个转义码会正确地清除我的屏幕,谢谢!

printf("\033c");
Run Code Online (Sandbox Code Playgroud)

编辑:需要修复!如果光标先前已隐藏,这将设置光标.如何在不更改光标可见性的情况下获得相同的内容?

如果有人会在posix/unix(linux/mac)系统上指出任何有关可移植性的问题,我会用更好的解决方案更新答案.

干杯