[英]How to use an array to take command line arguments?
因此,我試圖在啟動程序時使用cmd接受參數,但是我一直遇到將變量從char轉換為int的問題,因此它們可以與程序的其余部分一起使用。 感謝您的提前幫助。
int main(int argc, char* argv[]) {
int n = 0, a = 0, b = 0, func = 0, choice = 0;
double w;
if(argc < 10)
{
cout << "The Program requires -f <Function> -a <Starting Point> -b <Ending Point> -m <Method> -n <Number of slices>" << endl;
exit(0);
}
else
{
int func, a, b, choice, n;
int i;
for(int i = 1; i < argc - 1; i+=2)
{
if(argv[i] == "-f"){
func = *argv[i + 1];}
else if(argv[i] == "-a"){
a = *argv[i + 1];}
else if(argv[i] == "-b"){
b = *argv[i + 1];}
else if(argv[i] == "-m"){
choice = *argv[i + 1];}
else if(argv[i] == "-n"){
n = *argv[i + 1];}
else {
cout << "Input is Invalid" << endl;
exit(0);}
cout << argv[i] << endl;
}
w = (b-a)/double(n);
next(n, a, b, w, func, choice);
}
return 0;
}
編輯:因此,我已經將代碼重組為上面的樣子,並且可以編譯,但是我只得到了else語句。 例如,何時使用以下行啟動程序:./a3 -f 5 -a 1 -b 10 -m 3 -n100。我不確定為什么程序會恢復為else語句“ input is Invalid”其他if語句。
杜德,您必須從以下內容開始:
int n = 0, a = 0, b = 0, func = 0, choice = 0;
然后你有一個指向整數類型的字符指針,定義為
char* func, a, b, choice, n;
我相信在標准中,指針應該指向它們的類型,這就是您的問題。
解:
我猜您可以在分配ptrs之前將其轉換為char。
你有比較字符串的問題。
if(argv[i] == "-f")
不要檢查argv [i]是否等於“ -f”,而是檢查指針值是否與指向常量字符串“ -f”的指針相同。 您應該使用字符串比較方法,例如strcmp。
也是所有標志都需要值,為什么循環是:
for(int i = 1; i < argc; i++)
{
if(i + 1 != argc)
因為可以配對,所以可以這樣寫:
for(int i = 1 ; i < argc - 1; i += 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.