2

我目前正在尝试了解解析的基础并编写该代码。代码非常简单。我只想编写一个程序,能够以不同的方式完成不同的工作。我使用 linux,并通过 bash 推荐来启动代码。

该代码仅使用 -n commmend 打印“n isprinted”,而无法使用 -t commmend 打印“t isprinted”。我收到“选项需要参数--'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;

     }
    }
}
4

1 回答 1

4

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

yourprogram -t yourargument 

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

extern char * optarg;  

这将包含参数。

希望能帮到你

于 2013-05-16T07:38:17.210 回答