C中的命令行参数

时间:2019-02-09 19:55:26

标签: c parameters

当我给程序参数'2'或'3'时出现分段错误。它应该打印出数字二/三。这是什么错误?

values

运行程序时,键入./Test 2或3。我找不到错误,并且gcc也不发出错误/警告。 谢谢。

2 个答案:

答案 0 :(得分:1)

argv是一个数组:

argv[0] // the name of the executable
argv[1] // the first argument
argv[...]

当您这样做:

if (*argv[2] == '2')

并且您被./Test 2调用,只有一个参数,因此argv[2]是一个越界访问。

有关更多信息,请参见main function

答案 1 :(得分:1)

if (*argv[1] == '2') {
        printf("That's number two!");
    }       
    else if (*argv[1] == '3') {
        printf("That's number 3!");
    }   

索引从0开始。

argv [0]是程序的名称,而argv [1]是第一个命令行参数。