2016-07-24 94 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