回答
您的意思是您想要按任意鍵繼續,但不顯示屏幕上的「按任意鍵繼續」?試試這個getchar();
這將捕獲一個字符從鍵盤輸入並繼續。
+1這個答案很簡單,非常好。我的轟鳴聲只是爲了幫助「澄清」。按照這裏建議的方式使用'getchar()'。 – 2015-11-30 05:29:49
假設您在Windows上,請將system("pause")
替換爲system("pause > NULL")
。
謝謝,很高興知道您可以將程序的輸出傳遞給Windows上的空設備! :) – Wookie88 2013-02-23 10:15:10
該行是system("pause")
的一部分。您可以嘗試不同的方法,例如getline(std::cin, variable)
或cin.get()
。
而不是使用平臺相關system("pause")
可以使用獨立於平臺的std::cin.get()
,如果緩衝與它搞亂,你可以使用:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')
手之前清除緩衝區。
將cin.get()直接從控制檯讀取charachter沒有緩衝區? – IcyFlame 2013-02-23 11:57:06
首先,你應該從來沒有使用system("pause")
,因爲它是危險的。您的代碼無緣無故將調用外部系統過程;並且一個破解者可以找到一種方法將「暫停」命令替換爲另一個命令,使得您的程序可以用您的用戶權限調用另一個程序。
這就是說,你可以避免將消息發送到null
設備。
在Windows上:
暫停> NUL
如果你想大膽地讓這個可怕的系統調用隨身攜帶,隨處使用:
在linux上:
echo Pres任何關鍵要繼續......;閱讀X
現在你可以將OR和和(邏輯連接詞)同時,使一個系統調用,在這兩個系統的工作原理:
void pause(void)
{
system("echo Press any key to continue . . . && (read x 2> nul; rm nul || pause > nul)");
return;
}
Linux會創建一個臨時名爲「nul」的文件,因爲它無法識別此關鍵字。 linux上的null設備是/dev/null
,而不僅僅是nul
。之後,該命令將使用rm nul
刪除此臨時文件。所以如果你碰巧在同一個目錄下有一個名爲nul
的文件,應該警告這個命令對你不好(因爲另一個原因)。
該命令模仿原文。如果你想避免這個消息,只要刪除它的echo Pres...
部分。
加成:
- 清除終端屏幕便攜使用
system
? (不,不要出於同樣的原因做它的危險。)但是對於測試的目的,你可以使用:
system("cls||clear");
避免pause
。 C是一種語言,是目前最強大的語言之一。我確信有一種方法可以僅使用C(例如getchar()
或scanf()
)來製作pause
。
使用
system("pause>nul")
它完美的Windows!
嗨Aayush。你很晚纔回答這個問題。你能告訴讀者你的答案比已經提供的答案好嗎? – 2017-05-29 17:09:42
- 1. C#電梯系統暫停
- 2. unittest中的系統(「暫停」)
- 3. 暫停播放記錄在android系統
- 4. Cocos2d/Cocos2d-x粒子系統暫停
- 5. SSRS - 系統地暫停計劃?
- 6. Windows相當於暫停()系統調用?
- 7. C++更換系統(「暫停」)電話
- 8. 如何撤消系統(「暫停」)
- 9. 系統(「暫停」)導致堆損壞
- 10. 在Android系統中可靠地暫停媒體播放系統
- 11. TestNG處理外部系統依賴性,需要澄清
- 12. O'Reilly出版的澄清二維線性系統
- 13. android imgeview暫停和清除
- 14. 澄清
- 15. 澄清
- 16. 澄清
- 17. 澄清
- 18. 澄清
- 19. 耦合和依賴關係澄清
- 20. glClearBuffer *澄清
- 21. C++澄清
- 22. 的String [] []澄清
- 23. 澄清IntentService
- 24. setDispatched()澄清
- 25. WSGI/Apache澄清
- 26. 的GroupBy澄清
- 27. Rails.last澄清
- 28. MIPS .word澄清
- 29. 澄清代碼
- 30. SQLiteOpenHelper澄清
改爲使用'std :: cin.get()'。 – Rapptz 2013-02-23 10:10:23