csh的getopt用法
时间: 2023-09-01 18:08:46 浏览: 184
C语言中,getopt函数是一个常用的命令行参数解析工具,它可以方便地解析命令行参数并提供一些默认值。getopt函数在头文件<unistd.h>中定义,其基本用法如下:
```c
#include <unistd.h>
int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
```
其中,argc和argv是main函数的参数,optstring用来指定命令行参数的格式,例如:
```c
./a.out -a -b 10 -c "hello"
```
其中,-a和-b是无参数选项,-c是带参数选项,"hello"是-c选项的参数值。optstring的格式为:
```c
options:
-a 无参数选项a
-b 无参数选项b
-c 带参数选项c,参数值为字符串
```
通过调用getopt函数,可以逐个解析命令行参数,返回值为当前解析的选项字符,如果已经解析完所有选项,则返回-1。同时,全局变量optarg保存当前选项的参数值,optind保存下一个待解析的参数的索引。
例如,以下代码可以解析上述命令行参数:
```c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int opt;
while ((opt = getopt(argc, argv, "abc:")) != -1) {
switch (opt) {
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c with value '%s'\n", optarg);
break;
case '?':
printf("unknown option: '%c'\n", optopt);
break;
}
}
return 0;
}
```
需要注意的是,getopt函数会修改argv数组,将选项和参数值分别保存在不同的位置,因此需要在循环结束后重新设置optind为0,以便下一次调用getopt函数。
阅读全文