我该怎么做,C中的命令行参数

时间:2020-10-08 23:53:33

标签: c

我正在学习C,并且我参与了有关参数的讨论:int argc, char *argv[]

我正在尝试制作一个代码,该代码根据控制台中的参数输出结果。例如:

./a.out -E
打印"Hello World!"

./a.out -S
打印"Hello World in Spanish"

我有以下代码,但我仍然不知道如何获得它。

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

    if(argc == 1){
        printf("Hello World!");
    }
    else if(argc > 2){
        printf("Too many arguments supplied.\n");
    }
    else if(argv[2] == '-S'){
        printf("Hola Mundo in Spanish"); //show errors
    }
    else {
        printf("Hello, %s!!\n", argv[1]);
    }
    return EXIT_SUCCESS;
}

1 个答案:

答案 0 :(得分:2)

C中的数组索引从零开始。如果argc为2,则argv[0]是可执行文件的路径,而argv[1]是第一个参数。

您遇到的另一个问题是无法将char*字符串与==进行比较,并且不能有单个字符'-S'。是的,单引号用于字符,双引号用于字符串。

按如下方式使用strcmp()中的<string.h>

if (strcmp(argv[1], "-S") == 0) {
    printf("Hola Mundo in Spanish\n");
}