C 处理命令行参数?
所以,我可以让我的程序运行,但如果C 处理命令行参数?,c,unix,command-line-arguments,C,Unix,Command Line Arguments,所以,我可以让我的程序运行,但如果 $ ./a.out -f Text.txt 我只是不知道如何让程序建立-f表示文件的连接。执行此操作的逻辑是什么?函数具有签名intmain(intargc,char**argv);因此,您可以使用argc(正)和argv参数。argv数组保证包含argc+1元素。最后一个总是NULL。其他是非零、无别名的以零字节结尾的字符串。请注意,程序启动前的一些参数通常是:请参阅 例如,如果您键入(在Linux终端中)myprog-i a*.c-o foo.txt,并
$ ./a.out -f Text.txt
我只是不知道如何让程序建立-f表示文件的连接。执行此操作的逻辑是什么?函数具有签名
intmain(intargc,char**argv)
;因此,您可以使用argc
(正)和argv
参数。argv
数组保证包含argc+1
元素。最后一个总是NULL
。其他是非零、无别名的以零字节结尾的字符串。请注意,程序启动前的一些参数通常是:请参阅
例如,如果您键入(在Linux终端中)myprog-i a*.c-o foo.txt
,并且如果您键入shell已(通过)a*.c
扩展到a1.c
和a2.c
(因为只有这些文件的名称以a
开头,并且在当前目录中有.c
后缀),您的myprog
可执行main
程序被调用
argc==6
包含argv[0]
(因此您可以测试“myprog”
)strcmp(argv[0],“myprog”)==0
包含argv[1]
“-i”
包含argv[2]
“a1.c”
包含argv[3]
“a2.c”
包含argv[4]
“-o”
包含argv[5]
“foo.txt”
是argv[6]
指针NULL
argv
指针都是不同的、非重叠的
gnulibc让您可以解析这些参数:&。在POSIX中是标准化的(但GNU也提供了非常有用的功能)
我强烈建议您遵循:至少接受--help
和--version
例如,-f
用于某些选项,而不是文件名这一事实通常是常规的(但请参见程序参数中使用--
)。如果您确实想要一个名为-f
的文件(这是一个非常糟糕的主意),请使用/-f
有几枚炮弹爆炸了。您需要为此配置它们(甚至可以为您自己的程序配置它们)。在C运行时中查找“getopt()”函数(“man getopt”,如果您在Unix机器上)。