我对getopt
函数的行为有疑问。我的代码如下:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int opt;
while((opt = getopt(argc, argv, "gi:o:ctp")) != -1) {
switch(opt) {
case 'i':
printf("entered i\n" );
break;
case 'o':
printf("entered o\n" );
break;
}
}
return 0;
}
但是,当我输入./run -i in -o out
时,它仅打印出entered i
并停止。有人可以帮我吗?
[您需要将另一个参数传递给-i
和-o
,因为冒号在optstring
中的字母后面。
喜欢这个:
./run -i in -o out
或者,您可以通过在optstring
中添加其他冒号来使参数的参数成为可选参数。
while((opt = getopt(argc, argv, "gi::o::ctp")) != -1) {