我有以下代码:
int main(int argc, char *argv[])
{
int value,direction=0;
char c;
printf ("go\n");
while((c = getopt(argc, argv, "wr:")) != -1) {
printf ("go\n");
printf("%c\n",c);
switch(c) {
case 'w':
printf ("go\n");
value=atoi(optarg);
printf ("go\n");
printf("The input value is %x",value);
direction=1; //1 for write
break;
case 'r':
direction=0; // 0 for read
break;
default:
printf("invalid option: %c\n", (char)c);
usage();
return -1;
}
}
}
现在,当我通过编写
来运行程序时 ./spicode.out -w 25
我需要在使用optarg之后选择25,但它会产生分段错误。
我做错了什么?
答案 0 :(得分:4)
您应该在命令行选项之间放置冒号。
c = getopt(argc, argv, "w:r")
答案 1 :(得分:2)
来自gnu.org:
此字符串中的选项字符后面可以跟冒号(':') 表明它需要一个必要的参数
因此wr:
变为w:r