我正在尝试学习如何接受命令行参数和跟随标志的随附数据,即
myprogram -sampleflag datahere
到目前为止,我的代码在这里。 getopt() 将数据放入变量 c 中,显然您可以从它被调用的函数外部访问 optarg。这怎么可能?根据手册页,我的代码应该可以工作!但是,如您所见,输出为 (null)。
我的代码:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
opterr = 0;
char* cvalue = NULL;
int c;
char* optarg = hello;
while((c = getopt(argc, argv, "ps")) != -1){
switch(c){
case 'p':
cvalue = optarg;
printf("cvalue is : %s\n", cvalue );
break;
}
}
}
我的输出:($ myprogram -p test)
cvalue is : (null)
最佳答案
来自 the manual :
因此,在您的情况下,您的选项字符串应该是 "p:s"
而不是 "ps"
。
关于c - getopt(3) 如何工作, 'extern' 变量 optarg 是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23400042/