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