2011-05-16 32 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將處理所有的空格,換行符等用戶可能放入元素數量和其他數字之間。

相關問題