4

我想清除屏幕上的所有文本。我试过使用:

#include <stdlib.h>
sys(clr);

提前致谢!我正在使用 OS X 10.6.8。对困惑感到抱歉!

4

4 回答 4

11

您需要查看curses.h。它是一个终端(光标)处理库,它使所有支持的文本屏幕都以类似的方式运行。

有三个发布版本,第三个(ncurses)是您想要的,因为它是最新的,并且被移植到大多数平台。官网在这里,一些 很好的 教程

#include <curses.h>

int  main(void)
{
     initscr();
     clear();
     refresh();
     endwin();
}
于 2013-08-09T19:52:29.980 回答
6

清除屏幕的最佳方法是通过system(const char *command)stdlib.h 中的 shell 调用:

system("clear"); //*nix

或者

system("cls"); //windows

再说一次,尽量减少对调用系统/环境的函数的依赖总是一个好主意,因为它们会导致各种未定义的行为。

于 2013-08-09T20:01:58.697 回答
3

视窗:

system("cls"); // missing 's' has been replaced

Unix:

system("clear");

您可以将其包装在一个更便携的代码中,如下所示:

void clearscr(void)
{
#ifdef _WIN32
    system("cls");
#elif defined(unix) || defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))
    system("clear");
//add some other OSes here if needed
#else
    #error "OS not supported."
    //you can also throw an exception indicating the function can't be used
#endif
}

请注意,对 unix 的检查非常广泛。这也应该检测到您正在使用的 OS X。

于 2013-08-09T19:53:24.390 回答
1

此功能或类似 clrscn() 之类的功能的可用性非常依赖于系统且不可移植。

您可以保持非常简单并拥有自己的功能:

#include <stdio.h>

    void clearscr ( void )
    {
      for ( int i = 0; i < 50; i++ ) // 50 is arbitrary
        printf("\n");
    }
于 2013-08-09T19:54:01.350 回答