1

popt ライブラリを使用して引数を読み取るサンプルを作成しています。私のコードを以下に示します。

enum
{
   INPUT_NAME=1,
   SYMBOL
};
int main(int argc, char **argv)
{
    char filename[ 128 ], symbol[32];
    memset(filename, 0x0, 128);
    memset(symbol, 0x0, 32);

    struct poptOption opttable[] =
    {
        { "file", 'f', POPT_ARG_STRING, filename, INPUT_NAME, "filenames to read", "list of files we need to read" },
        { "symbol", 'r', POPT_ARG_STRING, symbol, SYMBOL, "symbol to view", NULL },
        POPT_AUTOHELP
        POPT_TABLEEND
    };
    poptContext options_socket = poptGetContext( NULL, argc, ( const char **)argv, opttable, 0 );
    int optionvalue(0);
    while( optionvalue > -1 )
    {
        optionvalue = poptGetNextOpt( options_socket );
        if(optionvalue == INPUT_NAME)
        {
           strcpy(filename, poptGetOptArg( options_socket ));
           printf("filename you are giving as input is :%s\n", filename);
        }
        else if( optionvalue == SYMBOL)
        {
           strcpy(symbol, poptGetOptArg( options_socket ));
           printf("symbol you are giving as input is :%s\n", symbol);
        }
    }
    return 0;
}

このコードを使用することで、各オプションの単一の値を読み取ることができます。単一のオプションを使用して値のリストを取得する方法はありますか?

私の現在のプログラムはこのように動作します。

sample run to my program: ./popt -f file1.txt file2.txt -r symbol1
OUTPUT:
filename you are giving as input is :file1.txt
symbol you are giving as input is :symbol1
DESIRED OUTPUT:
filename you are giving as input is :file1.txt
filename you are giving as input is :file2.txt
symbol you are giving as input is :symbol1

poptライブラリを使用してそれは可能ですか?

4

1 に答える 1

0

poptGetArgs 関数を使用することで実現できると思います。

于 2013-04-29T11:34:32.457 に答える