Getopt - filename作为参数

时间:2011-03-04 01:24:53

标签: c unix

假设我制作了一个名为C的程序:

./something -d dopt filename

所以-d是一个命令,dopt-d的可选参数,filename./something的参数,因为我也可以调用{ {1}}。

表示获取文件名的./something filename表单是什么?

2 个答案:

答案 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找到的命令行选项数。所以这个条件/循环结构可以处理用户列出的所有文件。