Как я могу передать main * argv [] в функцию? - PullRequest
15 голосов
/ 25 октября 2011

У меня есть программа, которая может принимать аргументы командной строки, и я хочу получить доступ к аргументам, введенным пользователем, из функции. Как я могу передать *argv[] из int main( int argc, char *argv[]) в эту функцию? Я немного новичок в концепции указателей, и *argv[] выглядит слишком сложным для меня, чтобы я мог решить это самостоятельно.

Идея состоит в том, чтобы оставить мой main как можно более чистым, перенеся всю работу, которую я хочу сделать с аргументами, в файл библиотеки. Я уже знаю, что я должен делать с этими аргументами, когда мне удается получить их за пределами main. Я просто не знаю, как их туда доставить.

Я использую GCC. Заранее спасибо.

Ответы [ 3 ]

26 голосов
/ 25 октября 2011

Просто напишите такую ​​функцию, как

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

и назовите это в main как parse_cmdline(argc, argv). Никакой магии не происходит.

На самом деле вам не нужно передавать argc, поскольку последний элемент argv гарантированно будет нулевым указателем. Но так как у вас есть argc, вы могли бы также передать его.

Если функции не нужно знать имя программы, вы также можете назвать ее как

parse_cmdline(argc - 1, argv + 1);
1 голос
/ 25 октября 2011

Просто передайте argc и argv вашей функции.

0 голосов
/ 25 октября 2011
SomeResultType ParseArgs( size_t count, char**  args ) {
    // parse 'em
}

Или ...

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

А потом ...

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