2011-05-16 31 views
1

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

回答

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

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

+1

我相信这是参数的长度,而不是有限参数的数量。 – GWW 2011-05-16 18:16:58

+1

两者都有限制。 – ypnos 2011-05-16 18:17:36

3

对于这个数量的元素,你应该使用stdin。无论如何,没有人会用手输入它们,并且./program < file就像它一样容易。

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

相关问题