我需要編寫一個程序,其中在運行期間,將任意大小的整數集作爲輸入。它們將被空白區分開。最後,給出一個新行,顯示輸入結束。如何將它們保存到整數數組中,以便以後可以顯示它們。我認爲這有點困難,因爲在編譯期間輸入的值的數量不知道在運行期間通過輸入獲取值並對它們進行抽取
1
A
回答
0
聽起來像作業。
糾正我,如果我錯了,我會給你更多的提示。
你可以聲明一個真正大小的數組,不會被用戶輸入填充,然後使用scanf或類似的東西來獲取整數,直到你點擊'\ n',或者你可以抓住每個整數一次,隨時分配內存,使用malloc和memcpy調用的組合。第一種選擇不應該在現實世界的問題中完成,即使你的教科書可能會告訴你這樣做,我當然也不會提倡這種做法。
只是有這樣的以K & R.
一個例子這是你將不得不在C的解決方案通常是兩個選項之一的一個典型問題。
使用一個真正的大數組,它是大到足以容納輸入。當數據可能非常大時,有時這是一個糟糕的選擇。當你將一個視頻幀或一個大文本文件保存到陣列時,一個壞主意的例子就是這個例子。這也會讓您在舊版本的Windows中出現緩衝區溢出攻擊。然而,對於較小的(家庭作業)程序,這有時是一個很好的快速解決方案,您可以指望用戶(即不想破壞程序的教授)不輸入1000個字符。通常這被認爲是不好的做法,請考慮我的第二個選擇,因爲我之前提到的安全原因。
使用動態數組(即malloc)。這可能是你的教授希望你做的事情,因爲這聽起來像是一個學生第一次學習指針和數組時所使用的典型問題。這是一個很好的方法,只需記住在完成時給你的記憶打電話。這裏棘手的部分是,你仍然需要提前知道你想要的數組的大小(當然不是在編譯時)。
相關問題
- 1. Javascript獲取li值並對它們進行編碼
- 2. WatiN,IE實例並通過它們的hWnd值獲取它們
- 3. 從每行的2列中獲取值,舍入它們並最終對它們進行排序
- 4. 提取行並在sqlserver中對它們進行計數
- 5. 獲取座標,測量距離並對它們進行比較
- 6. 雄辯。獲取多個關係並對它們進行排序
- 7. 從文件中獲取數字並對它們進行排序
- 8. 在C++程序運行期間從終端獲取輸入
- 9. Qt - 獲取數據並通過串行連接轉發它們
- 10. perl/python/bash腳本從文件中獲取值並對它們進行分組
- 11. 在運行期間從輸出獲取epydoc輸出?
- 12. 在Runtime.exec()中運行執行文件並獲取用戶輸入
- 13. 通過輸入天數獲取日期
- 14. Java:JSlider並通過JTextArea獲取它的值
- 15. 在datagridview中獲取所選行的值並添加它們
- 16. Java在運行bash命令時輸入並獲取輸出
- 17. 通過多個二維數組並對它們進行排序
- 18. 獲取通過在運行時
- 19. 在Windows 7中運行進程並獲取它的ID
- 20. 獲取路徑的密碼並重新運行它們
- 21. 從txt文件讀取單詞並對它們進行排序
- 22. 如何掃描目錄,獲取ruby文件,執行它們並獲取輸出?
- 23. 當通過命令行運行時,從MsTest.exe獲取輸出
- 24. 在C++程序運行期間輸入輸入值(./filename.out)
- 25. 獲取特定行,並將它們寫在一行
- 26. 如何從用戶獲取輸入並對該輸入進行冒泡排序?
- 27. 從OS讀取正在運行的進程並通過C++顯示它!
- 28. 通過密鑰獲取值並通過MAP使用JSTL進行迭代
- 29. 獲取休眠空間並在運行框架中運行
- 30. 如何通過選擇器獲取數值並對其進行內聯操作
在一個關鍵任務的高安全性應用程序「不會可以通過對用戶輸入裝」直到有一次......有安全的(R)功能與其它解決方案相比希望神靈用戶不會讓你感到驚訝。 – ssube
@peachykeen。我們並不是在談論關鍵任務高安全性應用程序,而是在談論一個作業問題。程序員有很多次這樣做。我不能告訴你我讀了多少次:char buffer [1000]; memset(buffer,'\ 0',1000);在其他(衆所周知的)程序之前進行用戶輸入。 –
當然,在這種情況下,你可以和人們都有,而且它不會在美國航空航天局運行,但是絕對沒有任何理由使這種做法永久化。它在現實生活中的不良使用導致了整個類別的錯誤(緩衝區溢出),其中一些錯誤具有實際的安全隱患。 – ssube