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

时间:2011-05-16 18:08:01

标签: c

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

2 个答案:

答案 0 :(得分:4)

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

您还需要某种输入格式。假设第一个数字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,要么在网上找到如何做的例子。你需要以某种方式识别个别数字,例如通过解析每个数字到下一个空格字符。然后你可以用空格字符分隔stdin上的每个数字。

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

答案 1 :(得分:3)

对于那些元素,你应该使用stdin。无论如何,没有人会手动输入它们,./program < file就像它一样容易。

解析与scanf没什么大不了的。只需定义您的输入应包括形成数组的所有数字之前的元素数。然后,您可以scanf("%d", &elemcount),然后使用scanf for循环播放elemcount。 它的美妙之处在于scanf将处理用户可能在元素数量和其他数字之间放置的所有空格,换行符等。