Как передать основную функцию * argv [] функции?

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

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

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

Ответ 1

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

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

и назовите это в main как parse_cmdline(argc, argv). Никакой магии не было.

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

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

parse_cmdline(argc - 1, argv + 1);

Ответ 2

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

Ответ 3

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 );
}