我需要编写一个程序,其中在运行期间,将任意大小的整数集作为输入。它们将被空白区分开。最后,给出一个新行,显示输入结束。如何将它们保存到整数数组中,以便以后可以显示它们。我认为这有点困难,因为在编译期间输入的值的数量不知道在运行期间通过输入获取值并对它们进行抽取
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