2017-12-10 16 views
0

いくつかのコマンドラインオプションを処理したい。getoptを使って単純なコマンドライン引数を処理する

int main(int argc, char **argv) { 
    char c; 
    int n = 10000; 
    int nThreads = 3; 

    while ((c = getopt (argc, argv, "n:t:")) != -1){ 
    switch (c) 
     { 
     case 'n': 
     n = *optarg; 
     break; 
     case 't': 
     nThreads = *optarg; 
     break; 
     default: 
     abort(); 
     } 
    } 

    printf("n=%d, nThreads=%d\n", n, nThreads); 
} 

しかし、これは私の期待どおりに動作しません。 ./program -n 10000 -t 2を実行すると、プログラムはn=49, nThreads=50を出力します。

私には何が欠けていますか?

答えて

1
n = atoi(optarg); 

そうしないと、intcharを割り当てています。

また、4950がどこから来ているかを見ることができます。

の文字値1は、49250です。

関連する問題