提供整数数组作为命令行的输入

Posted

技术标签:

【中文标题】提供整数数组作为命令行的输入【英文标题】:Provide integer arrays as input from command line 【发布时间】:2011-05-16 18:08:00 【问题描述】:

我正在编写一个程序来从一个库中访问一个装箱算法函数,自从大学以来我没有做过太多的事情,所以我的 C 有点生疏了。我正在调用的函数需要我传入 3 个不同的整数数组。我将从命令行调用它。我应该使用 argv 吗?还是标准输入?每个输入数组可能有 50 到 100 个元素。无论哪种方式,我想我都必须编写一些东西来解析字符串并将它们放入数组中,有没有简单的方法可以做到这一点?

【问题讨论】:

【参考方案1】:

对于大数组,我宁愿使用标准输入,因为操作系统通常会限制您可以拥有多少个参数。

您还需要某种输入格式。假设第一个数字n 是第一个数组中的元素数,然后是元素值,依此类推。然后我会做类似的事情:

#include <stdlib.h>
#include <stdio.h>

int main()

  // you need to implement read_number yourself
  int n = read_number(stdin);

  // allocate array
  int *array = (int*) malloc(n*sizeof(int));

  // read n numbers into array
  for ( int i=0; i < n; ++i )
    array[i] = read_number(stdin);

  // and so on...

你大概明白了。您要么必须自己实现read_number,要么在网上找到有关如何实现它的示例。您将需要以某种方式辨别单个数字,例如通过将每个数字解析到下一个空格字符。然后你可以用空格字符分隔标准输入上的每个数字。

例如,您可以使用下面@ypnos 建议的 scanf 解决方案。

【讨论】:

我认为是参数的长度而不是参数的数量受到限制。【参考方案2】:

对于这么多元素,您应该使用标准输入。无论如何,没有人会手动输入它们,./program &lt; file 就这么简单。

解析与scanf无关。只需定义您的输入应包括构成数组的所有数字之前的元素数量。然后你可以scanf("%d", &amp;elemcount),然后在elemcount上进行for循环,再次使用scanf。 它的美妙之处在于 scanf 将处理所有的空格、换行符等。用户可能会在元素数量和其他数字之间添加。

【讨论】:

以上是关于提供整数数组作为命令行的输入的主要内容,如果未能解决你的问题,请参考以下文章

Shell命令对整数求和,每行一个?

异常处理:从命令行输入5个整数,放入一整型数组,然后打印输出。。。

在java中用二维数组构造并打印一个有N行的杨辉三角,N由命令行输入如一个有6行的杨辉三角

如何在命令行的 telnet 窗口上读取输入和写入输出?

从命令行接收多个数字,求和之后输出结果

SVN 命令行的使用