我正在尝试退出控制台屏幕,即关闭屏幕可以使用什么命令来实现。
void main()
{
int n;
printf("Please enter a number less than 5");
scanf("%d", &n);
if(n <= 5)
printf("good");
else
{
printf("You entered a number above so the program will exit");
//here i need to call a function or use a command that will close
// the console screen;
}
}
任何帮助将不胜感激
答案 0 :(得分:4)
C11标准n1570不了解“控制台屏幕”(我想您是说terminal emulator正在运行程序)。请注意,C11并未提及“屏幕”或“键盘”(仅standard streams,而stdout
常常不是<控制台>控制台”)和许多计算机(例如,大多数Internet服务器或超级计算机,甚至您的手机...)都没有。另外,您的程序可以使用redirections或pipeline运行(甚至在Windows上),然后没有控制台(因此,在这种常见情况下,您的问题没有任何意义)。 / p>
因此,通常,无法以标准方式完成您想要的操作(因为这没有任何意义)。
也许您的operating system提供了一些(特定于操作系统的)方式来实现这一目标。因此,请调查与您的系统相关的OS API(例如Windows上的WinAPI或syscalls(2)中列出的Linux系统调用)。
也许您想使用一些与终端相关的库,例如ncurses。
如果终端遵循ANSI escape code约定,则可以遵循。
否则,请考虑使您的程序具有一些GUI。为此,您实际上需要一些widget toolkit(例如Qt,GTK等。)
您还可以考虑将inter-process communication与desktop environment一起使用。如何执行此操作(或什至可能)与操作系统和台式机有关,并且可能与session管理有关。
顺便说一句,请记住stdout
通常是缓冲的(也许是行缓冲的)。最好用printf
结束\n
控制字符串和/或调用fflush。
答案 1 :(得分:3)
在开窗操作系统或执行环境中,控制台窗口将立即关闭进程终止,因此不清楚您在此处询问的内容,因为在您的示例中,无论输入了什么输入,程序都会终止。
如果您是从IDE运行代码,则IDE通常会创建一个控制台进程并在其中启动您的代码。在那种情况下,控制台不是您的应用程序“拥有” ,而是作为 child 进程执行的;在这种情况下,窗口将保持打开状态,直到IDE启动的父进程关闭。同样,如果您从命令外壳启动程序。即使有可能,尝试关闭其父进程也可能是不合理的行为。
可以在进程继续运行时“隐藏” 控制台窗口,这可能是您要的;特定于平台的实现方式,您尚未指定;对于Windows,这样的问题将是Win32 programming hiding console window的重复。但是,如果不是直接从其他控制台进程启动进程,则这些方法很可能无法使用。