0

コマンドライン引数を受け取り、それらを使用して2つのintを定義する単純なc ++プログラムを作成しようとしています。ユーザーが「-f [数値] -s [数値]」と入力すると、int f が -f の後の数値に等しくなり、int s が -s の後の数値に等しくなります。

現時点では、引数に使用する数値に関係なく、結果を出力すると、f は常に 0 で、s は常に 4196288 です。

#include <iostream>
#include <stdlib.h>
#include <sstream>

using namespace std;

int main(int argc, char* argv[]) {
    int f, s;

    if (argc < 5) {
            cout << "USAGE: " << argv[0] << " -f <number> -s <number>" << endl;
            return 0;
    } else {
            for (int i = 1; i < argc; i++) {
                    if (argv[i] == "-f") {
                            f = atoi(argv[i + 1]);
                    } else if (argv[i] == "-s") {
                            s = atoi(argv[i + 1]);
                    }
            }

    cout << f << endl;
    cout << s << endl;

    }
    return 0;
 }
4

1 に答える 1

0

strcmp()char * の比較に使用:

        for (int i = 1; i < argc; i++) {
                if (strcmp(argv[i], "-f") == 0) {
                        f = atoi(argv[i + 1]);
                } else if (strcmp(argv[i], "-s") == 0) {
                        s = atoi(argv[i + 1]);
                }
        }

getopt()また、宿題でない場合は、コマンド ライン引数を解析することをお勧めします。

于 2013-11-08T03:56:47.610 に答える