2013-05-10 181 views
-5

我正在嘗試製作最大棋盤寬度爲80個單元格和最大棋盤高度爲52個單元格的棋盤遊戲,但用戶應該能夠通過將它們輸入到命令行中來選擇尺寸,可能小於最大值。我是編程新手,但我知道命令行參數是通過C中的主函數傳遞的,我剛剛被困住了,並且似乎找不到任何答案。C編程棋盤遊戲

任何人都可以幫助 謝謝。

+0

http://stackoverflow.com/questions/12091059/how-to-parse-integer-command-line-arguments-in-c – Elazar 2013-05-10 12:49:41

+0

(@Sudhee,一個是C++) – Elazar 2013-05-10 12:50:41

回答

1

main函數有兩個參數,一個通常稱爲argc的整數和一個通常被稱爲argv的字符串指針數組。 main是這樣常常聲明爲:

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

argc變量的傳遞給你的程序參數的個數。

argv變量包含實際參數傳遞給你的程序。

argc的變量是至少等於1,作爲實際程序名稱作爲參數傳遞總是,並且是在argv[0]

如果您需要兩個參數,那麼您首先必須確保argc至少等於3。程序的第一個參數然後作爲字符串存儲在argv[1]中,第二個參數存儲在argv[2]中。


我建議你用一個程序嘗試像這樣:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    printf("argc = %d\n", argc); 

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

    return 0; 
} 

最後(且無關的問題,但有趣的沒有少)是事實的大小數組實際上比大多數人所期望的大一個數組。 argv陣列的大小實際上是argc + 1,因此可以從argv[0](程序名稱)索引到argv[argc]。最後一項(argv[argc])總是一個NULL指針。

+0

謝謝你有道理,有隻是一件事,你說參數存儲爲一個字符串,我需要它是一個整數,因爲它應該是董事會的維度。 – Ibz 2013-05-10 13:04:21

+0

@Ibz你應該閱讀函數['strtol'](http://en.cppreference.com/w/c/string/byte/strtol)。 – 2013-05-10 13:08:34