Как разобрать аргументы командной строки из отдельной функции - PullRequest
0 голосов
/ 15 апреля 2019

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

РЕДАКТИРОВАТЬ : я думаю, что моя проблема заключается во второй функции, где у меня есть строка с надписью argv[1] = input_file;

Моя попытка:

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

int process_command_line(int argc, char *argv[]);   //declaration for command-line function

char str2[100];

int main(int argc, char *argv[]) {

    printf("%s", str2);
    getchar();
    return 0; 
}

//This function reads in the arguments 
int process_command_line(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Error: Missing program arguments.\n");
        exit(1);
    }

    //first argument is always the executable name (argv[0])

    //second argument reads in the input file name 
    strcpy(str2, argv[1]); //I think this is where the problem lies

}

1 Ответ

0 голосов
/ 15 апреля 2019

С помощью пользователей по этому вопросу, вот мое обновленное и работающее решение. Проблема заключалась в том, что я не вызывал вторую функцию в своей функции main.

Мое решение:

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

int process_command_line(int argc, char *argv[]);   //declaration for command-line function

char str2[100];

int main(int argc, char *argv[]) {

    process_command_line(argc, argv); //This was missing in my first attempt
    printf("%s", str2);
    getchar(); 
    return 0; 
}

//This function reads in the arguments 
int process_command_line(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Error: Missing program arguments.\n");
        exit(1);
    }

    //first argument is always the executable name (argv[0])

    //second argument reads in the input file name  
    strcpy(str2, argv[1]);

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