How can I pass main's *argv[] to a function?

2019-03-18 08:44发布

问题:

I have a program that can accept command-line arguments and I want to access the arguments, entered by the user, from a function. How can I pass the *argv[], from int main( int argc, char *argv[]) to that function ? I'm kind of new to the concept of pointers and *argv[] looks a bit too complex for me to work this out on my own.

The idea is to leave my main as clean as possible by moving all the work, that I want to do with the arguments, to a library file. I already know what I have to do with those arguments when I manage to get hold of them outside the main. I just don't know how to get them there.

I am using GCC. Thanks in advance.

回答1:

Just write a function such as

void parse_cmdline(int argc, char *argv[])
{
    // whatever you want
}

and call that in main as parse_cmdline(argc, argv). No magic involved.

In fact, you don't really need to pass argc, since the final member of argv is guaranteed to be a null pointer. But since you have argc, you might as well pass it.

If the function need not know about the program name, you can also decide to call it as

parse_cmdline(argc - 1, argv + 1);


回答2:

Just pass argc and argv to your function.



回答3:

SomeResultType ParseArgs( size_t count, char**  args ) {
    // parse 'em
}

Or...

SomeResultType ParseArgs( size_t count, char*  args[] ) {
    // parse 'em
}

And then...

int main( int size_t argc, char* argv[] ) {
    ParseArgs( argv );
}