📜  C语言中的getopt()函数以解析命令行参数

📅  最后修改于: 2021-05-28 03:20:51             🧑  作者: Mango

getopt()函数是C语言中的内置函数,用于解析命令行参数。

语法

getopt(int argc, char *const argv[], const char *optstring)

optstring is simply  a list of characters, 
each representing a single character option.

返回值:getopt()函数返回不同的值:

  • 如果该选项采用一个值,则该值是指向外部变量optarg的指针
  • 如果没有其他处理选项,则为“ -1”。
  • ‘?’当存在无法识别的选项并将其存储到外部变量optopt中时。
  • 如果一个选项需要一个值(例如本例中的-f)并且没有给出任何值,则getopt通常返回?。
    通过将冒号放在选项字符串的第一个字符中,getopt返回:而不是?没有给出值时。

通常,从循环的条件语句内部调用getopt()函数。当getopt()函数返回-1时,循环终止。然后使用getopt()函数返回的值执行switch语句。

第二个循环用于处理第一个循环中无法处理的其余多余参数。

下面的程序说明了C语言中的getopt()函数:

// Program to illustrate the getopt()
// function in C
  
#include  
#include  
  
int main(int argc, char *argv[]) 
{
    int opt;
      
    // put ':' in the starting of the
    // string so that program can 
    //distinguish between '?' and ':' 
    while((opt = getopt(argc, argv, “:if:lrx”)) != -1) 
    { 
        switch(opt) 
        { 
            case ‘i’: 
            case ‘l’: 
            case ‘r’: 
                printf(“option: %c\n”, opt); 
                break; 
            case ‘f’: 
                printf(“filename: %s\n”, optarg); 
                break; 
            case ‘:’: 
                printf(“option needs a value\n”); 
                break; 
            case ‘?’: 
                printf(“unknown option: %c\n”, optopt);
                break; 
        } 
    } 
      
    // optind is for the extra arguments
    // which are not parsed
    for(; optind < argc; optind++){     
        printf(“extra arguments: %s\n”, argv[optind]); 
    }
      
    return 0;
}

输出

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。