Как передать основную функцию * 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 );
}