C Getopt-filename作为参数
比如说我做了一个C程序,叫做:C Getopt-filename作为参数,c,unix,C,Unix,比如说我做了一个C程序,叫做: ./something -d dopt filename 所以-d是一个命令,dopt是-d的可选参数,filename是/something的参数,因为我也可以调用/something filename 获取文件名的getopt表单是什么?使用optstring“d:” 用optarg以常规方式捕获-d dopt。然后查看optind(将其与argc进行比较),它告诉您是否还剩下任何非选项参数。如果是这样,那么您的文件名就是其中的第一个 getopt没有明确告
./something -d dopt filename
所以-d
是一个命令,dopt
是-d
的可选参数,filename
是/something
的参数,因为我也可以调用/something filename
获取文件名的getopt
表单是什么?使用optstring“d:”
用optarg
以常规方式捕获-d dopt
。然后查看optind
(将其与argc
进行比较),它告诉您是否还剩下任何非选项参数。如果是这样,那么您的文件名就是其中的第一个
getopt
没有明确告诉您非选项参数是什么或检查数字。它只是告诉您它们从哪里开始(如果您处于GNU的非严格POSIX模式,那么首先将它们移动到参数数组的末尾)查看如何操作。在main()
的末尾,您会发现:
if (optind < argc)
{
do
{
char *file = argv[optind];
// do something with file
}
while ( ++optind < argc);
}
if(optind
optind
是getopt找到的命令行选项数。因此,此条件/循环构造可以处理用户列出的所有文件。在本例中,没有一个文件getopt
获取选项,在本例中,filename
不是选项(您显示的两个命令调用都需要选项)。