2013-05-16 86 views
0

我要實現具有以下簽名的主要功能:實現一個命令行參數

int main(int argc, char *argv[]) 

什麼是命令行參數,爲什麼沒有我需要的測試案例呢?他們是什麼意思的「簽名」?它只是函數原型嗎?

我一定會編輯這個問題,包括我在解決這些問題時嘗試解決這些問題。

我很困惑這個程序實質上做了什麼,我可以看到它返回一個整數值,但那個整數值代表什麼?另外,我將如何返回一個整數值與參數列表中指定的參數?他們的意思是什麼?謝謝您的幫助!

+2

這是功課還是什麼?這是幾乎所有C編寫的應用程序無處不在的「主要」入口點。你在這裏問了一些問題,*所有這些*都可以通過使用搜索引擎並做一些小小的研究或通過諮詢一本基本的C編程書來回答。 –

+0

我想我最困惑的是如何啓動這個函數的實現文件。我見過一些非常長的例子,我也看到一些非常短的例子。我不完全確定如何開始。 :( – Karen

+0

執行?你想做什麼?'int main(int argc,char ** argv)'是如何**每個**程序開始! –

回答

1

雖然這是一個可怕的問題,但我沒有多少努力,但我覺得有義務幫助緩解您的困惑。

下面是打印出它的名稱(argv[0])和需要至少一個參數的程序。如果沒有給出至少一個參數,則返回1表示失敗。否則,它打印出它的參數並返回0來表示成功(對shell或者啓動它的人)。

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    int i; 

    printf("Hello World, my name is \"%s\" \n", argv[0]); 

    if (argc < 2) { 
     printf("I require at least 1 argument! Exiting!\n"); 
     return 1; // Indicate failure. 
    } 


    printf("I was given %d command-line arguments:\n", argc-1); 
    for (i=1; i<argc; i++) { 
     printf(" [%d] %s\n", i, argv[i]); 
    } 

    return 0; // Indicate success 
} 

編譯並運行該程序,事情應該變得更加清晰。

+0

對不起,但我沒有任何編程經驗,我可能會問一些愚蠢的問題:(但你怎麼知道把「你好世界,我的名字是...」? – Karen

+0

而在for循環中,通常不是這樣:for(i = 0; ....)? – Karen

+0

「你怎麼知道要放」 - 因爲這是我的示例程序,我只是編造我想要的任何東西。這就是編程的工作原理。我在'1'開始'i',因爲'argv [0]'總是正在運行的可執行文件的名稱。參數從'argv [1]'開始。 –