Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我想要一个C程序从linux命令行接受参数_C_Command Line Arguments - Fatal编程技术网

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的发展方向。