当我给程序参数'2'或'3'时出现分段错误。它应该打印出数字二/三。这是什么错误?
values
运行程序时,键入./Test 2或3。我找不到错误,并且gcc也不发出错误/警告。 谢谢。
答案 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]是第一个命令行参数。