如何从单独的函数解析命令行参数

时间:2019-04-14 22:47:16

标签: c parsing command-line parameter-passing command-line-arguments

我正在尝试从一个函数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 :(得分:0)

在用户对此问题的帮助下,这是我更新后的有效解决方案。问题是我没有在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]);

}