2014-09-11 62 views
0

我對C編程非常陌生,並且編寫了這個C程序,它接收輸入N,並給出一個列表,其中包含N最多可以被7整除的所有數字我寫的程序如下:如何在命令行上執行ac文件

# include <stdio.h> 

int main(){ 
    int c,n,k; 
    int i=0; 
    int AnswerList [1000]; 
    printf("Enter the number\n"); 
    scanf("%d", &n); 
    for (c=1;c<=n;c++){ 
     if(c%7==0){ 
      AnswerList[i]=c; 
      i++; 
     } 

    } 
    for (k=0;k<=i;k++){ 
     printf("%d\n", AnswerList[k]); 

    }  
    return 0; 
} 

我需要我的程序運行等,如果N等於27,我應該能夠鍵入命令行

./byseven 27 

換句話說,我需要寫繞過printf的代碼我想。我將不勝感激任何幫助。

非常感謝。

+2

查找到的argc,argv的:http://pages.cs.wisc.edu/~cs354-1/onyourown/C.argv.html – brokenfoot 2014-09-11 07:59:26

+0

非常感謝。另外,有沒有更好的方法來設置數組,而不是任意聲明其大小爲1000? – user2904796 2014-09-11 08:15:10

回答

2

使用command-line arguments。一個簡單的例子:

int main(int argc, char **argv) { 
    if (argc < 2) { 
     printf("Usage: %s N\n", argv[0]); 
     return 0; 
    } 

    int N = atoi(argv[1]); // atoi is used to convert a string to an int 
    // your code 
} 
+0

非常感謝。另外,有沒有更好的方法來設置數組,而不是任意聲明其大小爲1000? – user2904796 2014-09-11 08:12:58

+0

如果您只是想打印數字,則不需要將它們存儲在數組中。而是直接打印它們。如果您需要存儲它們,那麼現在您最多隻能擁有N/7個數字,因此您可以使用動態分配(http://en.wikipedia.org/wiki/C_dynamic_memory_allocation)來保留確切的內存量你需要。 – GHugo 2014-09-11 08:26:00

0

您應該使用int main(int argc, char** argv)的定義。然後argc將會是你的params數(第一個param總是你程序的名字),而argv是包含那個params的字符串數組。因此,不需要函數。

-2
gcc -o hello hello.c 

它會編譯並生成一個名爲hello的可執行文件。運行程序類型:

./hello 
+1

-1:OP不問如何編譯和運行 - 他問的是如何傳遞命令行參數 – 2014-09-11 08:04:10

+0

對不起,我看不到標題後的問題。 – 2014-09-11 08:07:57