有任何的方式來運行,只有從鍵盤 用戶輸入停止,不要求每個週期繼續無限循環?在一個C程序 (我正在開發一個C聊天,用for(;;)
循環讀取條目,我只有在用戶想要鍵入併發送消息時才需要停止它)。做,而在鍵盤輸入的無限循環停止 - Visual C
回答
沒有指定的操作系統,所以我會承擔一些POSIX兼容的操作系統。
您可以使用select。這可以用來阻塞一組文件描述符(在你的情況下,標準輸入),有限的超時或不確定的阻塞。
我的猜測是,因爲這是一個聊天程序,你也想這樣做一些其他的文件描述符,像聊天TCP套接字。所以你可以在一個調用上測試輸入。
在Windows控制檯的情況下,你應該能夠使用GetStdHandle和WaitForSingleObject的/ WaitForMultipleObjects的,如果選擇不爲你工作。
它的Windows操作系統 – frx08
Windows有一個POSIX兼容層並支持select()。 –
@ frx08:如果是windows,是控制檯嗎?窗戶gui?你也應該指定。 – 2010-02-25 00:28:50
有一些在Windows這樣做的方法。假設你使用VC++,最簡單的方法是使用_kbhit()
。如果您想直接使用Win32 API,則可以調用GetNumberOfConsoleInputEvents()
並查看返回值是否非零。
你也可以做一個重疊讀,每次循環調用WaitForSingleObject
,超時值爲0.零等待表示無論是否有輸入,它都會立即返回。返回值會告訴您是否有任何數據:WAIT_TIMEOUT表示尚未讀取數據,WAIT_OBJECT0表示您有一些數據正在等待處理。
如何在循環中使用kbhit()/ getch()從緩衝區中讀取鍵之後重置stdin句柄從信號狀態? –
@techtonik:如果你打算使用句柄,你可能想要在整個過程中使用控制檯功能。 –
- 1. 停止並恢復鍵輸入的無限循環
- 2. Python - 停止無限循環的鍵盤命令?
- 3. 停止鍵盤輸入?
- 4. 在C++停止無限循環時按鍵被按下
- 5. c編程:停止無限循環
- 6. javascript停止無限循環
- 7. (C++)不會在std :: cin中停止並進入無限循環?
- 8. C在輸入鍵停止
- 9. 當輸入錯誤輸入時無限循環無限循環
- 10. 無限循環在applescript停止註銷
- 11. C++無限循環與輸入
- 12. 鍵盤輸入&Win32消息循環
- 13. 停止從超時的無限循環
- 14. 鍵盤如何知道無限循環?
- 15. 停止一個無限循環在Matlab中按下一個鍵
- 16. 掃描鍵盤輸入而不暫停
- 17. raw_input()停止無限while循環嗎?
- 18. 如何停止無限while循環
- 19. 如何停止無限循環?
- 20. 停止javascript無限循環onmouseout?
- 21. 命令停止無限循環?
- 22. QThread:如何停止無限循環
- 23. php web無限循環 - 如何停止
- 24. .htaccess無限循環如何停止
- 25. 如何在Java中無限循環地停止循環?
- 26. 鍵盤輸入循環時出錯
- 27. 停止循環C#?
- 28. Arduino Leonardo陷入無限的鍵盤仿真循環
- 29. 在無限循環中停止死亡風車目標C
- 30. 使用鍵盤在重定向輸入期間停止使用鍵盤,而不使用SIGINT在C
尋找'break'語句? –
不,我認爲他正在尋找一種方式來執行無阻塞讀取stdin –
沒有我需要一個沒有給每一次確認編輯:正確 – frx08