我想通過控制檯參數傳遞一個無符號的int值給我的程序。
你有什麼我試過沒:
第一:檢查是否ARGC是2,否則錯誤如何獲得unsigned int作爲控制檯參數?
如果我試圖將該值轉換與第二值:
strtoul(argv[1], NULL, 0)
所以當我通過「100」,我得到「1」
我做錯了什麼?
BR
史記
€:傳遞一個錯誤的參數,以我的功能,發現了錯誤,謝謝你們
我想通過控制檯參數傳遞一個無符號的int值給我的程序。
你有什麼我試過沒:
第一:檢查是否ARGC是2,否則錯誤如何獲得unsigned int作爲控制檯參數?
如果我試圖將該值轉換與第二值:
strtoul(argv[1], NULL, 0)
所以當我通過「100」,我得到「1」
我做錯了什麼?
BR
史記
€:傳遞一個錯誤的參數,以我的功能,發現了錯誤,謝謝你們
這一點很難說沒有看到實際的代碼,但你可以以此爲基準:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
char *pCh;
unsigned long unlong = 42;
// Check enough arguments.
if (argc != 2) {
puts ("Not enough arguments");
return 1;
}
// Convert to ulong WITH CHECKING!
unlong = strtoul (argv[1], &pCh, 10);
// Ensure argument was okay.
if ((pCh == argv[1]) || (*pCh != '\0')) {
puts ("Invalid number");
return 1;
}
// Output converted argument and exit.
printf ("Argument was %ld\n", unlong);
return 0;
}
成績單如下:
pax> ./testprog 314159
Argument was 314159
如果這是不夠的,幫幫忙,我建議你張貼表現出的問題在最短的完整的程序,那麼我們就可以告訴你,在痛苦的細節是什麼地方錯了:-)
你的方法應該工作。或者,你可以使用stringstream:
std::string str(argv[1]);
unsigned long ul;
std::stringstream(str)>>ul;
你確定argc == 2嗎? –
是的,通過檢查'if(iArgCount!= 2)' – Sagi
@Sagi發佈您的代碼 –