2016-07-24 95 views
-1

我在C中创建了一个客户端数据库,并且我无法找到列出所有人的方式,当控制台或窗口已满时,它将打印暂停到屏幕,并显示一条消息,如“按一个键显示另一个页面”,以vi的方式可以显示下一页使用单击...如果有人知道如何快速在此...C:完全暂停页面

+1

重定向它在命令行中“更多”。 –

+0

是重定向它或多或少像** $ yourprg |少** –

+0

这个问题太模糊了,甚至不清楚这是否是一个编程问题。 – Olaf

回答

-1

您可以尝试弄清楚控制台有多少行(在Linux上:从环境中获取$ROWS变量)。然后,在打印任何内容之前,尝试清除控制台。您可以使用致电system("cls"); //Windowssystem("clear") //Linux或使用ASCII字符printf("\033[2J");。这确保您将从第一行开始。 现在,你可以简单地使用这样的循环:

for(int x = 0; x < TOTAL_ELEMENTS; x++) 
{ 
    if(x < COLS) 
    { 
     puts(rows[x]); 
    } 
    else 
    { 
     printf("Press [ENTER] to show the next line") 
     getchar(); 
     printf("\033[F\r"); // Go to beginning of previous line to override (Not that portable) 
     puts(rows[x]); 
    } 
} 

否则,您可以使用寻呼机一样more(在Windows/Linux)或most/less(Linux)的像@Eugene在其评论建议

+0

您的终端的大小可以并将改变。这还不够。 – tadman

+0

如果我记得正确,那么只要大小发生变化,$ COLS变量就会更新。如果不是,那么会有ncurses作为替代... – mame98

+0

是的,但你需要听信号并相应地更新。这看起来很困难,这就是为什么存在“诅咒”的原因。在'printf'上投掷ANSI代码只会让你感到满意。 – tadman