提供整数数组作为命令行的输入
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 < file
就这么简单。
解析与scanf无关。只需定义您的输入应包括构成数组的所有数字之前的元素数量。然后你可以scanf("%d", &elemcount)
,然后在elemcount上进行for循环,再次使用scanf
。
它的美妙之处在于 scanf 将处理所有的空格、换行符等。用户可能会在元素数量和其他数字之间添加。
【讨论】:
以上是关于提供整数数组作为命令行的输入的主要内容,如果未能解决你的问题,请参考以下文章
异常处理:从命令行输入5个整数,放入一整型数组,然后打印输出。。。