解析争论

时间:2013-05-16 07:07:18

标签: c parsing getopt

我目前正在尝试理解解析的基础并编写该代码。代码很简单。我只想写一个程序,能够用不同的表扬做出不同的工作。我使用linux,我通过bash表示开始代码。

该代码只用-n commmend打印“n打印”,用-t表示打印“t打印”。我得到“选项需要参数 - 't'”错误。如何处理?

我的第二个问题是“nt:”和“n:t:”之间的区别。当我尝试第二个时,我没有打印任何结果。

提前致谢。

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    int opt;

    opterr = 0;


    while ((opt = getopt(argc, argv, "nt:")) != -1) {
        switch (opt) {
        case 'n':
            printf("n is printed");
            break;
        case 't':
            printf("t is printed");
            break;

     }
    }
}

1 个答案:

答案 0 :(得分:4)

当你在一个字符后加上':'时,该函数需要一个(或多个)参数,每个参数前面都有一个空格。
所以你必须输入:

yourprogram -t yourargument 

要获得您的论证,您必须声明:

extern char * optarg;  

将包含参数。

希望它可以帮到你,