假设我制作了一个名为C的程序:
./something -d dopt filename
所以-d
是一个命令,dopt
是-d
的可选参数,filename
是./something
的参数,因为我也可以调用{ {1}}。
表示获取文件名的./something filename
表单是什么?
答案 0 :(得分:4)
使用optstring "d:"
以通常的方式使用-d dopt
捕获optarg
。然后查看optind
(将其与argc
进行比较),它会告诉您是否还有任何非选项参数。如果是这样,你的文件名就是第一个。
getopt
没有明确告诉您非选项参数是什么或检查数字。它只是告诉你它们从哪里开始(如果你处于GNU的非严格POSIX模式,首先将它们移动到参数数组的末尾)
答案 1 :(得分:3)
查看grep does it的方式。在main()
结束时,您会找到:
if (optind < argc)
{
do
{
char *file = argv[optind];
// do something with file
}
while ( ++optind < argc);
}
optind
是getopt找到的命令行选项数。所以这个条件/循环结构可以处理用户列出的所有文件。