I';我想要一个C程序从linux命令行接受参数
我正在尝试将文本作为输入进行分析,它将根据输入到命令提示符中的参数及其值(例如I';我想要一个C程序从linux命令行接受参数,c,command-line-arguments,C,Command Line Arguments,我正在尝试将文本作为输入进行分析,它将根据输入到命令提示符中的参数及其值(例如/a.out-a-b20-c3)以任意顺序进行修改和打印,并且它们是可选的,根本不需要输入。如何将这些参数实现到C代码中,以及如何找出它们的值? (为了便于解释,可以使用前面提到的-a、-b和-c。) 谢谢。(我不想在这件事上投票。谢谢@SteveFriedl。) 因为我从来没有听说过getopt(),并且为这种事情编写了自己的解析器,所以请参见下面的示例 请注意,getopt似乎只接受单字符参数名称。例如,您可以使用
/a.out-a-b20-c3
)以任意顺序进行修改和打印,并且它们是可选的,根本不需要输入。如何将这些参数实现到C代码中,以及如何找出它们的值?
(为了便于解释,可以使用前面提到的-a、-b和-c。)
谢谢。(我不想在这件事上投票。谢谢@SteveFriedl。)
因为我从来没有听说过getopt()
,并且为这种事情编写了自己的解析器,所以请参见下面的示例
请注意,getopt
似乎只接受单字符参数名称。例如,您可以使用-f hello.text
,但不能使用-filename hello.txt
optind
和optarg
是在unistd.h
中声明的(ugh)全局变量
(请注意,通过单步执行argv[]
,您不难实现这一点,这可能会产生更灵活的解决方案。)
:
产生
option: i
filename: file.txt
option: l
option: r
unknown option: x
extra arguments: hero
(我不想在这件事上投票。多亏了@SteveFriedl。)
因为我从来没有听说过getopt()
,并且为这种事情编写了自己的解析器,所以请参见下面的示例
请注意,getopt
似乎只接受单字符参数名称。例如,您可以使用-f hello.text
,但不能使用-filename hello.txt
optind
和optarg
是在unistd.h
中声明的(ugh)全局变量
(请注意,通过单步执行argv[]
,您不难实现这一点,这可能会产生更灵活的解决方案。)
:
产生
option: i
filename: file.txt
option: l
option: r
unknown option: x
extra arguments: hero
通常您会这样声明主函数
int main( int argc, char *argv[] ) {}
然后,当您从命令行调用程序时
./a.out 1 2 3
argc
将是一个包含4(传递的参数数)的整数
在
argv[1]
到argv[3]
中,分别有指向参数1到3的指针。而在argv[0]
中,您有一个指向程序名的指针。通常您会这样声明主函数
int main( int argc, char *argv[] ) {}
然后,当您从命令行调用程序时
./a.out 1 2 3
argc
将是一个包含4(传递的参数数)的整数
在argv[1]
到argv[3]
中,分别有指向参数1到3的指针。而在argv[0]
中,有一个指向程序名的指针。研究getopt()
库调用;这是为了从命令行获取argc
和argv
,并允许您使用它们。研究getopt()
library调用;这是为了从命令行获取argc
和argv
,并允许您使用它们。是Linux的发展方向。