2013-03-14 22 views
1

我正在學習C編程,並且遇到了無法在任何地方找到答案的問題。我想要做的是寫一個C程序,我可以直接從終端運行附加參數,例如,編寫可以使用命令行中的其他參數運行的C程序

cat -n input.txt - nosuchfile.txt input.txt 

我想知道的是我怎麼能寫任何功能,這樣我就可以(編譯後)如上運行它,那麼該程序的功能也許不是很重要,但爲了完整起見,貓獲取輸入文件列表並將其打印到stdout。它具有完整的錯誤處理(因此文件nosuchfile.txt),並且還可以包含行號(-n)並從標準輸入( - )中獲取輸入。

爲了便於說明,我以前編寫了可以編譯源文件的程序,然後使用例如程序運行程序。 ./cat,並且如果需要輸入,則在此命令開始運行程序之後已獲取該輸入。因此,終端看起來是這樣的:

gcc ... 
./cat 
-n input.txt - nosuchfile.txt input.txt 

我想知道如何才能夠運行的程序是這樣

gcc... 
cat -n input.txt - nosuchfile.txt input.txt 

非常感謝您!

+0

你問argc和argv。你也可以查看getopt。然而,這是對別人沒有幫助的問題,所以我也投票結束。 – 2013-03-14 05:50:51

+0

[處理命令行標誌在C/C++]可能的重複(http://stackoverflow.com/questions/14737957/handling-command-line-flags-in-cc) – abelenky 2013-03-14 06:00:06

+1

這個問題是_basic_(因此最有可能的一個重複),但不是無用的。 – 2013-03-14 06:02:24

回答

0

您可以使用命令行參數:

#include <stdio.h> 

int main(int argc, char *argv[]) // argc is the (c)ount of arguments, argv is the (v)alues 
{ 
    printf("\nCommand-line arguments:\n"); 

    for(int count = 0 ; count < argc ; count++) 
    { 
    printf(" argument %d = %s\n", count, argv[count]); 
    } 

    return 0; 
} 
+1

非常感謝!接受的答案:) – user2107209 2013-03-14 06:09:20

0

有2個或3個主井定義的參數在大多數系統中:

#include <stdio.h> 
int main(int ac, char **av) { printf("%d %s\n", ac, av[0]); return 0; } 

將打印的參數(1)的數量和節目的名稱。 av[1]將包含一個指針,指向包含所述第一參數(如果AC> 1)等

第三個可能的參數, char **env)(在某些系統)將包含一個指針,指向環境變量的字符串。

EDITgnu getopt library有助於解析所述命令行正如在一般 UNIX/GNU工具使用。

相關問題