Как я могу добавить параметры аргумента в C / C ++? (визуальная студия Platform 2019) - PullRequest
0 голосов
/ 15 июня 2019

Я хочу добавить Опции к аргументам в c / c ++. Визуальное студийное консольное приложение.

например:

-f [Путь к файлу] -e ["exe" файл] и т.д ..

спасибо;).

1 Ответ

0 голосов
/ 16 июня 2019

Вот простая программа, которая анализирует входные аргументы на основе флагов -f и -e.Обработка ошибок для недопустимых аргументов должна быть улучшена и реализована таким образом, чтобы соответствовать вашему конкретному приложению.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

typedef struct arguments {
    char *fname;
    int file_flag;
    char *exename;
    int exe_flag;
} arguments;

int main(int argc, char **argv)
{
    extern char *optarg;
    extern int optind;

    int c = 0;
    arguments *input_args;

    input_args = (arguments *)malloc(sizeof(arguments));
    if (input_args == NULL) {
        fprintf(stderr, "Failed to allocate memory!\n");
        return -1;
    }
    input_args->file_flag = 0;
    input_args->exe_flag = 0;

    /* You can initialize the  arguments with some default values */
    input_args->exename =  "default_exename";
    input_args->fname =  "default_filename";

    const char *usage = "Usage: %s -f [File path] -e [exe file]\n";

    while ((c = getopt(argc, argv, "f:e:")) != -1)
        switch (c) {
        case 'f':
            input_args->file_flag = 1;
            input_args->fname = optarg;
            break;
        case 'e':
            input_args->exe_flag = 1;
            input_args->exename = optarg;
            break;
        default:
            fprintf(stderr, usage, argv[0]);
            return -1;
    }

    if (0 == input_args->file_flag)
    {
        printf("No file argument provided!\n");
        printf("Initializing the file name with default value %s!\n", input_args->fname);
    }

    if (0 == input_args->exe_flag) {
        printf("No exe argument provided!\n");
        printf("Initializing the exe name with default value %s!\n\n", input_args->exename);
    }

    printf("File name = \"%s\"\n", input_args->fname);
    printf("Exe name = \"%s\"\n", input_args->exename);

    return 0;
}
...