2012-05-08 34 views
1

這是我一直在測試打印出一堆東西,但有一種情況,我不明白是出於某種原因。訪問參數與argv

我需要將一個整數作爲參數傳遞給稍後使用的函數,但是當我再次打印它以確保正確存儲它時,我會得到一個隨機數。這是代碼的相關部分:

int num_bytes = argv[1]; 
.... 
printf("Max number of bytes: %d", num_bytes); 

我只將一個參數傳遞給函數,它是一個int。我也嘗試將argv [1]作爲int來使用,但是這也不起作用。我不確定這是否是printf的問題。如果只是這樣,我不介意。我只需要知道我正確地存儲了一個int值。我知道argv是一個指向字符串的指針數組(我認爲是C字符串),但我認爲你可以將字符賦值爲整數。

回答

5

char **argv被認爲是一個字符數組(或字符串)。您需要首先將argv中的值轉換爲整數。

您可以通過atoi做到這一點:

int num_bytes = atoi(argv[1]); 
+0

atoi()不是標準函數,請參閱我的答案。 – 2012-05-08 03:33:46

+0

@ H2CO3:無論如何,您都需要爲兩種方法導入「」。 'atoi()'是更直接(更容易觀察)的方式。 – Makoto

+0

我想知道爲什麼你的答案得到兩個upvotes和我的零,我提供了多個解決方案以及一個*標準*之一,我也解釋了它爲什麼產生這些特定結果的原因...... – 2012-05-08 03:36:44

0

的argv是一個指向字符串數組。你需要調用atoi(argv [1])來獲得你傳遞的整數參數。