我的代码使用 getopt 从命令行获取参数。我希望能够采用三个必需的参数和一个可选的第四个参数。我们分别称这些输入 A 和 B:./main string1 string2 filename或./main -n 3 string1 string2 filename。
有人告诉我,可选参数不需要放在开头,因此以下内容也应该有效。让我们将此输入 C : ./main string1 string2 -n 3 filename。请注意,其他 3 个参数必须按此顺序排列。这是我遇到麻烦的部分。
目前,我的代码如下所示:
int c;
int n;
while ((c = getopt(argc,argv,"n:"))!=-1) {
printf("Loop\n");
switch (c) {
case 'n':
cvalue = optarg;
n = atoi(optarg);
break;
case '?':
break;
default:
break;
}
}
如果我输入 B,则代码有效,即进入循环并且输入正确分配给 n。但是,如果我输入 C,它甚至不会进入循环,即它似乎甚至没有在参数中注册 -n 3。这是预期的行为,还是我的代码中缺少某些内容?我该如何解决这个问题?