通过输入获取值并在运行时显示它们

时间:2011-10-20 02:28:35

标签: c arrays pointers input

我需要编写一个程序,在运行期间,一组任意大小的整数将作为输入。他们将被白色空间隔离。最后,给出了一个新行,显示了输入的结束。如何将它们保存为整数数组,以便以后可以显示它们。我认为这有点困难,因为在编译期间将不知道输入的值的数量

1 个答案:

答案 0 :(得分:0)

听起来像是家庭作业。

如果我错了,请纠正我,我会给你更多提示。

你可以声明一个非常大的数组,这个数组不可能被用户输入填充,然后使用scanf或类似的东西来获取整数,直到你点击'\ n',或者你可以获取每个整数使用malloc和memcpy调用的组合,一次分配内存。第一种选择永远不应该在现实世界的问题上完成,即使你的教科书可能会告诉你这样做,我当然也不会提倡这种做法。

在K& R中有一个这样的例子。

这是您在C中遇到的典型问题。解决方案通常是两种选择之一。

  1. 使用足够大的数组来保存输入。有时,当数据非常大时,这是一个糟糕的选择。当您将视频帧或大型文本文件保存到阵列时,一个不好主意的示例。这也可以使您在旧版Windows中发生缓冲区溢出攻击。然而,对于较小的(家庭作业)程序来说,这有时是一个很好的快速黑客解决方案,你可以指望用户(即你的教授不试图打破你的程序)不输入1000个字符。通常这被认为是不好的做法,出于我之前提到的安全原因,请考虑我的第二个选项。

  2. 使用动态数组(即malloc)。这可能是您的教授希望您做的事情,因为这听起来像是学生第一次学习指针和数组时使用的典型问题。这是一个很好的方法,只要记得在你完成后免费打电话给你。这里棘手的部分是你仍然需要提前知道你想要的数组的大小(当然不是在编译时)。