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

2019-03-18 08:59发布

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.

3条回答
时光不老,我们不散
2楼-- · 2019-03-18 09:06

Just pass argc and argv to your function.

查看更多
3楼-- · 2019-03-18 09:13

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);
查看更多
对你真心纯属浪费
4楼-- · 2019-03-18 09:33
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 );
}
查看更多
登录 后发表回答