Параметры командной строки в C-программе? - PullRequest
0 голосов
/ 12 марта 2011

Как мне прочитать параметры командной строки в C?Например, в

./test --help

или

./test --build

как мне получить доступ к "--build" или "--help"?

Ответы [ 4 ]

8 голосов
/ 12 марта 2011

Ваши параметры в argv:

int main(int argc, char **argv)

если вы напечатаете содержимое argv (argv [0], argv [1] и т. Д.), Вы поймете идею.

try:

int main (int argc, char **argv)
{
    for(int i = 0;i< argc;i++) 
        printf("%s\r\n",argv[i]);
}
3 голосов
/ 12 марта 2011

Вы можете использовать аргументы argc и argv для функции main и делать с ними разные вещи:

#include <string.h>
void dohelp(void) { /* whatever; */ }
void dobuild(void) { /* whatever; */ }
int main(int argc, char **argv) {
    if (argc == 2) {
        if (!strcmp(argv[1], "--help")) dohelp();
        if (!strcmp(argv[1], "--build")) dobuild();
    }
    return 0;
}

argc содержит количество параметров, передаваемых оболочкой вашей программе, включая имя программы. Таким образом, myapp --help получает аргумент 2.

argv сами аргументы. Последний аргумент argv (argv[argc]) является указателем NULL.


Редактировать: параметры не обязательно должны называться argc и argv, но при именовании еще чего-то еще очень, очень плохо!

int main(int foo, char **bar) /* RGAGGGGHH */
int main(int n, char **options) /* RGAGGGGHH */
2 голосов
/ 12 марта 2011

Самое основное - использовать аргументы (int argc, char *argv[]), и вы можете разобрать их напрямую.

Еще один продвинутый метод - использовать getopt ... http://www.gnu.org/s/libc/manual/html_node/Getopt.html

0 голосов
/ 12 марта 2011

Есть несколько способов сделать это [как обычно].Аргументы командной строки считываются из argv (передаются в main вместе с argc).

Вы можете анализировать их самостоятельно и иметь флаги установки битового переключателя каждый раз, когда в argv обнаруживается новая опция.Или вы можете использовать библиотеку для разбора аргументов командной строки.Я предлагаю libc Getopt (Google это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...